面向对象

1,面向对象的关系:

A,关联关系:这是面向对象中关系最弱的一种关系,只表示两者之间存在这么一种关系。

B,继承关系(一般和特殊):XX是一种XX(学生是一个人。)

C,聚合关系:XX是XX的一部分!聚集(松耦合),组合(高度耦合。)

D,实现关系:我有一种方法,但是自己不实现,让子类去实现。


2,java中的面向对象与内存的解析:

A,在java中数据类型主要分为两大类型:基本数据类型和引用数据类型。

B,基本数据类型的值存放在堆中,inti=9;这个i和9都是存放在堆中,我们在使用9

的时候,直接访问i即可。

C,引用数据类型的值存放在栈中,在堆中存放的是这个值的引用地址。Strings=”zhangsan”,这个zhangsan存放在栈中,而s存放在堆中,我们在使用zhangsan的时候,直接访问s这个引用地址即可。

3,面向对象设计的过程就是抽象的过程。


4,重载的概念:

在同一个类中,方法名相同,方法参数个数或参数类型不同,与方法返回值和方法修饰符没有任何的关系。

publicclassOverloading {
publicstatic voidmain(String[] args) {
System.out.println(add(12,2,12));
}
/**
* 重载方法的练习
*/
publicstatic intadd(inta,int b){ 
returna+b;
}
publicstatic intadd(inta,int b,intc){
returna+b+c;
}

}


5,static关键字

Static可以用来修饰属性、方法和代码块,static修饰的变量属于这个类所有,也就是由这个类创建的所有对象共用一个static变量,我们通常把static修饰的属性和方法称为类属性和类方法。不使用static修饰的属性和方法,属于单个对象。通常叫做实例属性和实例方法。

Static修饰的方法或者属性,在该类加载的时候就加载static修饰的方法或者属性。

在类中可以定义static变量,但是在方法中不可以定义static变量,也就是说类变量不能是局部变量。



6,封装。

封装是类的三大特征之一,就是将类的状态信息隐藏在内部类,不允许外部程序直接访问。

publicclass Dog {
privateString name;//姓名
privateintage;//年龄
/**
* 初始化赋值
* @paramname
* @paramage
*/
publicDog(String name,intage){
this.name=name;
this.age=age;
}
publicString getName(){
returnname;
}
publicvoidsetName(String name){
this.name=name;
}
publicintgetAge(){
returnage;
}
publicvoidsetAge(intage){
this.age=age;
}
publicString show(){
return"我的名字叫"+this.name+",今年"+this.age+"岁";
}
}


7,this关键字。

This关键字是对一个对象的默认引用。在每个实例方法内部,都有一个this引用变量,指向调用这个方法的对象。

this是在对象内部指代自身的引用,所以this只能调用实例变量,实例方法和构造方法(也就是不能调用static修饰的方法或者属性)


8,继承

java继承通过extend关键字来实现。如果使用private和protected修饰父类则子类继承不了。

继承是java的三大特征之一,但是java支持单继承,即一个子类只能有一个直接父类。继承的表达式是is a的关系。


9,重写

在子类中可以根据需求对从父类继承的方法进行重新编写,称为方法的重写或者覆盖。

方法重写必须要满足如下要求。

①,重写方法和被重写的方法必须具有相同的方法名;

②,重写方法和被重写方法必须要具有相同的参数列表;

③,返回值必须保持一致。


10,重写和重载的区别。

①,重载:在同一个类中,方法名相同,参数列表不同,和返回值无关。

②,重写:重写的方法和被重写的方法必须方法名相同,参数列表相同,返回值相同。



11,多态

多态是具有表现多种形态的能力和特征。也就是同一个实现接口,使用不同的实例而执行不同的操作。