1.面向对象三大特征
封装性:所谓封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不不可信的进行信息隐藏。简而言之就是,内部操作对外部而言不可见(保护性)
继承性:继承是指这样⼀一种能力:它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。
多态性:所谓多态就是指一个类实例的相同方法在不同情形有不同表现形式。多态机制使具有不同内部结构的对象可以共享相同的外部接口。
2.名词扩展
OOA:面向对象分析
OOD:面向对象设计
OOP:面向对象编程
3.类与对象
所谓的类就是指共性的概念,而对象指的是一个具体的、可以使用的事物。
首先产生类(类是生产对象的蓝图),而后才可以产生对象。对象的所有行为,一定在类中进行了完整的定义。
1.使用private对属性进行封装,要访问私有属性,按照Java的设计原则必须提供以下两种方法:
setter方法:主要用于进行属性内容的设置与修改
getter方法:主要用于属性内容的取得
class Person{
private String name;
private int age;
public void setName(String name){
this.name = name; ;
}
public String getName(){
return name;
}
public void setAge(int i){
this.age = age;
}
public int getAge(){
return age;
}
}
public class TestDemo2 {
public static void main(String[] args) {
Person person = new Person();
person.setName("张三");
person.setAge(10);
}
}
2.通过构造函数:提供合适的构造函数
所谓的构造方法就是使用关键字new实例化新对象时来进行调用的操作方法。必须要遵循以下原则:
1.方法名称必须与类名称相同
2.构造方法没有返回值类型声明
3.每一个类中一定至少存在一个构造方法
class Person{
private String name;
private int age;
public Person(String n,int i){
name = n ;
setAge(i);
}
public void setName(String n){
this.name = n; ;
}
public String getName(){
return name;
}
public void setAge(int i){
this.age = age;
}
public int getAge(){
return age;
}
}
public class TestDemo2 {
public static void main(String[] args) {
Person person = new Person("张三",10);
}
}
构造方法可以发生重载!
在进行类定义时:①定义属性==>②定义构造方法==>③定义普通方法
3.静态代码块和实例代码块
静态代码块只会被初始化一次
所有的static方法不允许调用非static定义的属性或方法
所有的非static方法允许访问static方法或属性
使用static定义方法只有一个目的:某些方法不希望受到对象的控制,即可以在没有实例例化对象的时候执行(广泛存在于工具类中)
4.this关键字
1.this调用本类属性:
当参数与类中属性同名时,类中属性无法被正确赋值。此时加上this关键
字便可以正确给对象属性赋值。
只要在类中方法访问类中属性,一定要加 this 关键字
2.this调用本类方法:
this调用本类方法有以下两种情况:
.调用普通方法:this.方法名称(参数) 2.调用构造⽅方法:this(参数)
虽然调用本类普通方法不需要加 this 也可以正常调用。但建议加上,加上 this 的目的可以区分方法的定义来源(在继承中有用)
在Java中,支持构造方法的互相调用(this)
使用this调用构造方法时注意:
this调用构造方法的语句必须在构造方法首行
使用this调用构造方法时,请留有出口
3.this表示当前对象的引用
只要对象调用了本类中的方法,这个 this 就表示当前执行的对象