JAVA学习---面向对象基础

1.理解面向对象

1.1了解常用的术语

对象、抽象、类、实例、抽象类、接口、构造方法、包、封装、继承、多态

1.2面向对象与面向过程的区别

博文1博文2

1.3理解对象

对象---现实世界(包括逻辑世界)的实体的投影和属性

属性---对象的性质

方法---对象的行为

1.4理解类

类是对事物的抽象,将对象的属性和方法封装到独立的单位内部。

2.类

2.1类的定义(public、default、abstract、final修饰符)

[访问修饰符] [修饰符] class类名{
      //类成员
}

访问修饰符:public(公开的,最多只有一个包含public修饰的外部类)、default(默认修饰符,可以有多个)

修饰符:abstract(修饰抽象类,只能被继承重写)、final(修饰最终类,不能被继承)

2.2成员变量---对应于属性

2.3成员方法---对应于方法

成员方法:构造方法、main方法、一般成员方法

2.4成员修饰符(public、protected、default、private、static、final、abstract、native、synchronized)

可访问权限

名称 当前类 相同包 子类(不同包) 所有类
public
protected  
默认    
private      

static:静态,不需要创建类的实例就可以访问,具有全局变量的效果

final:最终类,属性方法无法修改,可以被继承而不可以重写

abstract:修饰抽象类,方法只有被重写才能使用,自己不能被创建实例对象

native:被修饰方法可以调用非java编写的代码,语言交互

synchronized:同步锁

2.6成员变量和局部变量的区别

(静态变量=类变量)+实例变量 = 成员变量

定义的位置不同,成员变量存在于类中,局部变量存在于方法中

生命周期不同,成员变量与实例对象生命周期一致,局部变量和方法生命周期一致

作用域不同,成员变量在整个类内部可以访问,局部变量则只有在方法中可以访问

修饰符不同(大概局部变量只能被final修饰)

优先级不同,局部变量优先级高

局部变量必须进行变量初始化

2.7 main方法

主方法,程序的入口点,也是程序第一个被执行的方法

3.类的实例

3.1构造器

构造方法,与类名相同,完成实例的初始化,可以有多个,无参或有参,一般public修饰,使用this相互调用(放在第一行)

3.2创建类的实例

2种方法
1----类名 实例名 = new 类的构造方法名(); 2----类名 实例名 = null; 实例名 = new 类的构造方法名();

3.3访问实例的成员

实例名.属性名;
实例名.方法名();

3.4 this关键字

实现访问自身类的方法或属性

3.5匿名对象

一种类似简写的形式:new 类的构造方法名.属性名或方法名();

3.6垃圾回收(System.gc()、Runtime.getRuntime().gc())

不定期的清理无引用的对象所占据的空间

4.方法

4.1方法的定义

4.2方法的分类(无参数方法、有参数方法、无返回值、返回基础数据类型的值、返回引用数据类型的值)

4.3方法的调用

4.4方法的参数传递(值传递、引用传递)

4.5方法的重载

两个或多个同名的方法,并且方法的参数、类型、顺序至少有一个不同

5. static关键字

5.1使用static修饰变量

5.2使用static修饰方法

5.3使用static修饰代码块---可以为类的属性进行初始化

5.4单例模式---确保指定类只有一个实例

6.包

6.1包的概念及应用(分类、访问权限限制、避免类的重名冲突)

package 包名;

6.2使用import导入包(使用长名类、使用import语句)

import 包名.类名; //导入某个类
import 包名. *;     //导入所有类

6.3 Java常用的包

java.lang:Java的基础类;

java.awt:创建用户图形界面的类文件集合;

java.swing:轻量级组件包;

java.io:与输入输出相关的文件和流的操作类与接口;

java.util:各种工具类;

java.net:网络编程方面的类和接口;

java.sql:数据库访问相关类集合。

import sun.tools.tree.ThisExpression;

//学生成绩信息管理
public class Demo6_1 {
    
    private String name;
    private String major;
    private double dbmath;
    private double dbenglish;
    
    private void  setMessage(String name, String major, double dbmath, double dbenglish) {
        this.name = name;
        this.major = major;
        this.dbmath = dbmath;
        this.dbenglish = dbenglish;
    }
    
    private void getMessage() {
        System.out.print("学生信息如下:\n");
        System.out.print("姓名:" + this.name + " 专业:" + this.major + " 数学成绩:" + this.dbmath + " 英语成绩:" + this.dbenglish);
    }
    private void sum() {
        System.out.println("学生的总成绩为:" + (this.dbmath + this.dbenglish));
    }
    private void average() {
        System.out.print("学生的平均成绩为:" + ((this.dbmath + this.dbenglish)/2));
    }
    
    public static void main(String[] args) {
        Demo6_1 stu = new Demo6_1();
        stu.setMessage("张三", "电子科学与技术", 150, 148);
        stu.getMessage();
        stu.sum();
        stu.average();
    }
}

学生信息如下:
姓名:张三 专业:电子科学与技术 数学成绩:150.0 英语成绩:148.0学生的总成绩为:298.0
学生的平均成绩为:149.0

posted @ 2019-03-16 14:05  凌·杰特  阅读(114)  评论(0编辑  收藏  举报