继承

1.1.生活中的继承

子承父业

龙生龙 凤生凤

老鼠生来会打洞

你长得真像你父亲

 1.2.Java中继承

继承是类和类之间的关系,继承至少得两个类。

语法格式:

class B  extends A {
     
 }

 其中 B是一个类,A是一个类。B类继承了A类。 B叫A的子类。A是B的父类(超类,基类)

         在Java中,一个已有类通过关键字extends继承一个已有的类,被继承的类称为父类(超类,基类),新的类称为子类(派生类)。在Java中不允许多继承,可以多重继承。

 继承的意思,就是将父类的属性和方法拿到子类中去使用 。但是凡是私有的 无法继承。

1.成员变量(属性)

   公开的和默认的属性,子类可以继承使用的

   私有的成员变量,子类无法使用的

2.成员方法

   公开的和默认的成员方法,子类可以继承使用

   私有的成员方法,子类无法使用的

总结:凡是私有的 无法继承。子类不能使用父类私有化的所有的东西。

3.构造方法

   先执行父类的构造,再执行子类的构造方法

   如果父类中有有参构造,但是没有无参构造。子类会报错

   关于构造方法:父类与子类的构造方法的形式保持一致。 父类中有无参构造。子类也有无参构  造。父类中没有无参构造,子类也没有无参构造方法。

 案例:

Animal 类:

属性 : name, age ,sex 私有化的

方法: 吃 运动

子类:Panda


使用Panda继承Animal 并可以使用Animal下面的所有属性和方法,对属性进行赋值

对方法进行调用

class Animal {
	private String name;
	private int age;
	private char sex;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public char getSex() {
		return sex;
	}
	public void setSex(char sex) {
		this.sex = sex;
	}
	//方法
	public void eat () {
		System.out.println("吃饭");
	}
	public void sport () {
		System.out.println("运动");
	}
	
}
class Panda extends Animal {
	
}
//继承有啥好处呢?代码可以重复利用
class Cat extends Animal {
	
}
class Dog extends Animal {
	
}
public class Demo3 {
	public static void main(String[] args) {
		Panda panda = new Panda();
		panda.setName("熊大");
		panda.setAge(9);
		panda.setSex('公');
		panda.eat();
		panda.sport();
	}

}

Java中的继承都是单继承。只能有一个父类

Java中可以多重继承。

class A {
	
}
class B extends A{
	
}
class C extends B {
	
}
public class Demo4 {
	public static void main(String[] args) {
		
	}

}

重写

重写目的:

子类可以继承父类的非私有化的方法,但是有的 时候父类的需求满足不了子类的需求了,这个时候需要重写父类非私有的方法 。

重写的要求:

1.必须有继承关系
2.父类的方法必须是非私有化的
3.在子类中重写父类的方法,这个方法除了方法体不一样其他都一样的。
4.必须再子类中去重写

 

class Transportation {
	public void run () {
		System.out.println("可以跑......");
	}
	
}
//当父类不能满足子类的需求的话可以在子类中重写父类的方法
class Fly extends Transportation {

//重写的方法  和父类 的 返回值  参数  方法名字 一模一样,但是方法体不一样的

	@Override//开启重写的严格的限制,告知编译器,下面的方法必须是重写的
	public void run () {
		System.out.println("飞机跑的很快大概500km/h");
	}
	
}
class Train extends Transportation {
	@Override
	public void run() {
		System.out.println("在铁轨上跑的300km/h");
	}
}
class Bus extends Transportation {
	@Override
	public void run() {
		System.out.println("在公路上跑的60km/h");
	}
}
public class Demo2 {
	public static void main(String[] args) {

		Train train = new Train();
		train.run();
	}
	

}

重载

在Java中同一个类中可以有很多个方法。方法名字一样。但是参数类型不一样。这种叫重载 。

1.方法的重载必须在同一个类中
2.方法名字必须一致
3.方法的参数类型必须不一样
4.方法的返回值可以不一样
5.无参构造和有参构造 也是一种重载

 
class Person {
	//在一个类中,方法法名字一样,但是参数一定不一样。这叫方法的重载
	//返回值可以不一样
	public void test () {
		System.out.println("test");
	}
	public void test (String name) {
		System.out.println(name);
	}
	public void test (int i) {
		System.out.println(i);
	}
	void test (double d1) {
		
	}
	public String test(String str1, String str2) {
		return str1 + str2;
	}
}
public class Demo3 {
	public static void main(String[] args) {
		
	}

}