文章目录
一、类和对象
1.定义类和对象
类:通俗的讲,类可以表示生活中的某一类事物,该事物所具有的特征(属性)和行为(方法)归结为一类。生活中有具体一类的事物也有抽象一类的事物所以类当然也分为普通类和抽象类。
对象:是实现类的具体实列。
2.定义类的步骤
(1)定义类名
(2)编写属性
(3)编写方法
举例:
public class person{ //定义类名:人类
private String name; //定义属性:人类有名字 年龄
private int age;
public Person(String name, int age) { //构造方法
this.name = name;
this.age = age;
}
public void eat(){ //定义方法:吃饭
System.out.print(this.name+"吃饭");
}
}
3.使用类方法
通过实例化一个类对象去调用
实例化对象的方法:类名称 对象名称 = new 类名称();并通过对象.(点操作符)访问方法
例:
public class person{ //定义类名:人类
private String name; //定义属性:人类有名字 年龄
private int age;
public Person(String name, int age) { //构造方法
this.name = name;
this.age = age;
}
public void eat(){ //定义方法:吃饭
System.out.print(this.name+"吃饭");
}
public static void main(String[] args) {
//实例化一个person对象
Person p1 = new Person("zs",18);
//通过对象访问类方法
p1.eat();
}
}
总结
1、类就是有相同特征的事物的集合,而对象就是类的一个具体实例。
2、对象的产生需要以下三步:
(1)加载类;
(2)给对象开辟内存空间;
(3)调用构造方法;
3、对象属性的初始化方式:
(1)提供一系列setter和getter方法;
(2)构造一个函数来重载;
二、封装
1.封装的定义
隐藏对象内部的复杂性,只对外公开简单的接口,便于外界使用,从而提高系统的扩展性、可维护性
2. 封装的实现
在JAVA中使用访问权限修饰符,实现封装。
Java用于限定其他对象对该类内部定义的访问权限
有public、protected 、private、default 四个
3.访问权限修饰符
(1)public修饰的变量或者方法在不同包中,相同包中,子类中,当前类中都是可以直接访问的。
(2)protected修饰的变量或者方法在相同包中,子类中,当前类中都是可以直接访问的,在不同包中的类则不能访问。
(3)default(也就是默认的) 的变量或者方法在相同包中,当前类中都是可以直接访问的,在不同包中,即便是子类中也不能访问。
(4)private 修饰的变量或者方法只能在当前类中都是直接访问,在不同类中就不能访问,只能提供向外的公开的方法去调用,也就是面向对象的封装。
三、继承(extends)
1.继承的定义
是面向对象的最显著的一个特征。继承是从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并能扩展新的能力
比如上面的人类,每一个人都有名字和年龄,都会吃。但是具体人又分为男人和女人,又有自己特有的属性和行为,甚至相同的行为,也有千差万别。
2.继承的语法格式
class Man extends Person{
private String voice;
public Man(String name, int age, String voice){
super(name, age); //调用父类中的构造方法,使用super();
this.bonous = bonous;
}
//子类重写父类方法
public void eat(){
return super.eat() + voice;
}
}
3.重载和重写
重写:表示子类中的方法名、返回值、参数列表和父类当中的方法是一模一样。
重载:表示两个方法方法名相同,参数列表不同(返回值不能作为重载的衡量标准)。
重写和重载的区别和联系
- 1)重写发生在具有继承关系两个类之间的;重载既可以发生在具有继承关系的两个类之间,也可以发生于同一个类当中
- 2)构造方法可以构成重载,但是不可以构成重写
- 3)子类重写父类的方法实现叫做重写;两个方法方法名相同,参数列表不同叫做重载
- 4) 静态方法可以被重载但是不能被重写,重写静态方法相当于隐藏父类中的方法
总结:
- 1)一个父类,并不是优于子类或者比子类拥有更多的功能,子类比父类功能更加丰富
- 2)设计类时,一般将一些通用的功能放至父类当中,特有的功能则由子类所持有
- 3)子类中调用父类的普通方法/构造方法,需要通过super关键字,调用父类中的构造方法,则使用super(), 调用父类中的普通方法则使用super.xxx
- 4)父类中包含什么样的构造器,子类中也需要包含什么样的构造器
- 5)父类私有的属性在该类之外是不可以访问的
- 6)Java当中的继承是单继承,一个Java类只能继承一个父类
四、多态
1.多态的定义
指允许不同类的对象对同一消息做出响应。即同一消息可以根据发送对象的不同而采用多种不同的行为方式。当一个类A有很多子类B,C,D时,并且子类都重写了父类中的某个方法func(),A a = new B,C,D(),这样的对象称之为向上转型对象,通过它调用func, 不同的向上转型对象就会在调用func时表现不同的行为,这样就称之为多态。
2.多态的三要素
- 1)具有继承关系的两个类
- 2)重写
- 3)向上转型对象 父类的引用指向创建的子类的对象
向上转型:
class Person{
public void method(){
}
}
class Son extends Person{
public void method(){
}
}
Person p = new Son();
p.method();
3.多态的实现原理
注意事项
对象转换: 一个对象的引用可以类型转换为另外一个对象的引用
- 向上转型:当前的子类的对象赋值给父类的引用 隐式转换
- 向下转型:当把一个父类的实例转换为子类的引用 显式转换
- instanceOf避免向下转型会出现ClassCastException异常发生