java面向对象复习回顾
1.java面向对象基础部分
1、类和对象的概述
类只是抽象概念,程序员编写的类,只是模板,本身不会占用内存(占用的是磁盘空间)。
对象:有模板创建出来的实例,是真实存在的,会占用内存(程序中就是用对象保存数据)。
2、类和对象的关系
类是对象的模板
对象是类的实例
3、类和对象的组成
由属性和方法组成。
属性:事物固有的特征,如身高、体重和姓名等……
方法:事物能够执行的操作,如吃饭、睡觉和学习等……
4、属性:属性就是变量
特殊的属性:可以将对象作为属性
5、方法(普通):
<1>.无参无返回值
<2>.无参有返回值
<3>.有参无返回值
<4>.有参有返回值
参数的传递方式:属于值传递。这种传递方式不会传递地址。
2.构造方法
1、构造方法的作用:用来构造对象。在创建对象的过程中,会调用构造方法。
一般改写构造方法对属性进行初始化。
注意:
1、构造方法被改写后,系统的默认结构将会失效。
2、如果没有手动改写构造方法,那么在创建对象的过程中,系统会调用对应的默认构造方法。
public 类名(){}
3、一个类中不一定要写构造方法。
4、方法名与类名相同的方法不一定是构造方法,例如Test01类中 public void Test01(){}
5、类中可以存在多个main方法(重载)。
6、构造方法的第一句默认调用父类的默认构造。
2、构造(或普通)方法的重载
1、在同一个类中存在多个相同名字的方法。
2、同名方法的参数列表必须互不相同,参数列表指数据类型和数据个数。
public void show(int num,String str){}
public void show(int num,String str,char ch){}
属于重载
3、重载与返回值和访问修饰符无关
public void method(int num,String str){}
public int method(int num,String str){}
不属于重载
3.封装
封装:对于程序的实现细节进行隐藏。
封装的特点:
1、属性私有化。不让外部类直接操作属性,防止属性被随意修改操作。
2、向外部提供getter/setter,间接的修改属性和获得属性的方法。
3、改写构造方法,使外部类可以初始化属性的值(即赋值)。
4、重写toString();代替show()方法。
5、重写equals();提供对象比较的规则。
6、通过构造方法和set方法可以对属性进行限制,例如如下代码:
public Book(String title, int pageNum) {
this.title = title;
setPageNum(pageNum);
}
public void setPageNum(int pageNum) {
if (pageNum > 200) {
this.pageNum = pageNum;
} else {
System.out.println("页数至少为200!");
this.pageNum = 200;
}
}
4.继承
继承:在原有类(父类)的基础上派生出新的类(子类)。
1、特点
1、一旦发生继承关系,子类将会拥有父类的内容。但这些内容不包括:父类的私有内容和构造
方法,父类可以被继承的成员与访问修饰符有关。此外,如果两个类不在同一个包下,则无法
直接形成继承关系。
2、子类继承父类后拥有了父类的内容,这种关系被称为is a的关系。
3、java类支持单继承,指一个子类只能有一个父类
4、java类支持多实现,指一个子类可以实现多个java接口
2、访问修饰符:
public:不同方法之间都可以互相使用,按照实际情况导入包名和类名。
protected:受保护的 不同包之间可以访问,但是两个类之间必须存在继承关系。
默认:在同一个包不同类可以相互访问。
private:只能在本类中使用。
3、创建一个子类代码加载的顺序:优先加载静态资源,代码块。
父类静态代码块--->父类的静态属性和方法--->子类静态代码块--->子类的静态属性和方法--
->父类构造代码块--->父类普通属性和方法--->父类构造方法--->子类构造代码块--->子类 普通属性和方法--->子类构造方法
5、抽象类和接口
1、抽象类
1、抽象类不能实例化,但是拥有构造方法。
2、有抽象方法的类一定是抽象类。
3、抽象类不一定有抽象方法,可能没有任何抽象方法。
4、普通java类继承抽象方法必须实现抽象类的所有方法。
5、抽象类继承抽象类,不一定要实现父类所有的方法。
6、抽象类可以有构造方法和普通方法等所有普通类能够拥有的内容。
7、抽象类中 abstract 关键字不可以省略。
2、接口
1、接口可以有抽象方法和静态常量,还可以有 default 默认方法。
2、接口中的对象可以省略 abstract 、 final 、 static 关键字。
3、接口不可以实现接口。
4、接口可以单或多继承接口。
5、接口不可以继承抽象类。
/**
区分:java类 只支持单继承
所以java支持单继承
java接口 支持多继承
所以java支持多继承
*/
3、重载和重写的概念区别
重写:
1、在子类中将继承自父类的方法进行改写的过程。其方法名和参数列表返回值等都相同。
2、子类的访问修饰符不能比父类的更加严格。比如父类为 public 则子类不能为 private