一、继承
1:描述一个学生类:姓名年龄学号属性,学习的方法
2:描述一个工人类:姓名年龄工号属性,工作的方法
3:描述一个人类:姓名年龄属性,说话的方法。
4:发现学生类和人类天生有着联系,学生和工人都是人。所以人有的属性和行为学生和工人都会有。出现类代码重复故使用继承减少代码重复率。
class Person {
String name;
int age;
// 静态变量(类变量)对象和对象之间的代码重复使用静态变量
static String country = "CN";
Person() {
}
void speak() {
System.out.println(name + ":哈哈,我是人!!!");
}
}
// 让学生类和人类产生关系,发现学生is a 人,就可以使用继承
class Student {
String name;
int age;
Student() {
}
void study() {
System.out.println("姓名:" + name + "年纪:" + age + ":好好学习");
}
}
class Worker {
String name;
int age;
void work() {
System.out.println(name + ":好好工作,好好挣钱。");
}
}
class Demo1 {
public static void main(String[] args) {
Student s = new Student();
s.name = "jack";
s.age = 20;
s.study();
Worker w = new Worker();
w.name = "rose";
w.work();
}
}
二、继承特点
1:描述类和类之间的关系
2:降低类和类之间的重复代码
3:降低对象和对象之间的代码重复使用静态变量
4:降低类和类之间的代码重复使用就继承
三、extends关键字
class Student extends Person {
Student() {
}
void study() {
System.out.println("姓名:" + name + "年纪:" + age + ":好好学习");
}
}
继承细节;
1:类名的设定,被继承的类称之为父类(基类),继承的类称之为子类
2:子类并不能继承父类中所有的成员
3:父类定义完整的成员 静态成员,非静态,构造方法。静态变量和静态方
法都可以通过子类名.父类静态成员的形式调用成功。
4:所有的私有成员不能继承,private修饰的成员。
5:构造函数不能被继承
四、super关键字
作用:
1:主要存在于子类方法中,用于指向子类对象中父类对象。
2:访问父类的属性
3:访问父类的函数
4:访问父类的构造函数
五、重写(覆盖 override)
1、 在继承中,子类可以定义和父类相同的名称且参数列表一致的函数,将这种函数
称之为函数的重写.
2、前提
(1):必须要有继承关系
3、特点
(1):当子类重写了父类的函数,那么子类的对象如果调用该函数,一定调用的是重写过后的函数。可以通过super关键字进行父类的重写函数的调用。
(2): 继承可以使得子类增强父类的方法
4、细节
(1): 函数名必须相同
(2):参数列表必须相同
5、子类重写父类的函数的时候,函数的访问权限必须大于等于父类的函数的访
问权限否则编译报错
6、子类重写父类的函数的时候,返回值类型必须是父类函数的返回值类型或该返回值类型的子类。不能返回比父类更大的数据类型
class Animal{
int x=1;
String name;
void eat(){
System.out.println("吃东西");
}
void shout(){
System.out.println("我是动物");
}
}
class Dog extends Animal{
void eat(){
System.out.println("啃骨头");
}
void shout(){
System.out.println("旺旺");
}
void eat(String food){
System.out.println("吃:"+food);
}
}
class Cat extends Animal{
//重写方法
void eat(){
System.out.println("吃老鼠");
}
void shout(){
System.out.println("喵喵");
}
}
class Demo9{
public static void main(String[] args){
Dog d=new Dog();
d.shout();
d.eat();
Cat c=new Cat();
c.shout();
c.eat();
System.out.println();
}
}
六、重载(overload):
1:前提: 所有的重载函数必须在同一个类中
2:特点: 函数名相同,参数列表不同,与其他的无关(访问控制符、返回值类型)
网友评论