java---继承

1.    概念:将这些类的共性内容,抽取到一个独立的类中,让独立的类的多个类产生一种关系

2.    格式:class Zi extends Fu{}

3.    好处:1).提高了代码的复用性和维护性

2).类与类之间产生了关系:耦合性,这种关系是多态的前提条件

4.    Java开发的原则:高内聚,低耦合

5.    继承的特点:

a)    java中,只支持单继承,不支持多继承

b)    但可以多层继承

6.    子类继承父类, 只能继承父类中非私有的成员(成员变量/成员方法),不能继承父类的构造方法,但可以通过super()间接访问

7.    什么情况下使用继承?

A类是B类的一种,或者B类是A类的一种,则可以是继承关系

8.    super()关键字:表示父类的一个空间标识(简单记:代表父类的对象)

9.    this与super的区别:

a)    位置不同:

               i.         this.成员变量:访问本类的成员变量;

              ii.         super.成员变量:访问父类的成员变量

b)    成员方法:

               i.         this.成员方法:本类的成员方法

              ii.         super.成员方法:父类的成员方法

c)    构造方法:

               i.         this()/this(“”):访问当前类的构造方法

              ii.         super()/super(“”):访问父类的构造方法

10.  子类继承父类,会默认访问父类的无参构造方法,如果父类没有无参构造,则子类构造方法全部报错,解决方法:

a)    手动给出父类的无参构造

b)    子类的构造方法(有参或者无参)的第一句话:super(“传参”),通过父类的有参构造间接访问

c)    子类的(有参构造)第一句话:this(),间接访问父类的有参构造.

继承的相关程序

1.代码块的执行顺序

class Fu4 {
	static {
		System.out.println("静态代码块Fu");
	}
	{
		System.out.println("构造代码块Fu");
	}
	public Fu4() {
		System.out.println("构造方法Fu");
	}
}
class Zi4 extends Fu4 {
	static {
		System.out.println("静态代码块Zi");
	}
	{
		System.out.println("构造代码块Zi");
	}
	public Zi4() {
		System.out.println("构造方法Zi");
	}
}
public class ExtendsTest2 {
	public static void main(String[] args) {
		Zi4 z = new Zi4();
	}
}
执行结果:
静态代码块Fu
静态代码块Zi
构造代码块Fu
构造方法Fu
构造代码块Zi
构造方法Zi
2.老师和学生的继承

package 继承与面向对象;
/*老师和学生的共同属性是姓名,年龄(成员变量)
 *		赋值方式set()
 * 成员方法:我爱Java
 * */
class Student{
	//私有化成员变量
	private String name;
	private int age;
	//成员变量赋值:set()-get()方式
	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 void show(Student s){
		System.out.println("姓名:"+s.getName()+",年龄:"+s.getAge());
	}
	public void show2(){
		System.out.println("我爱Java");
	}
}
//继承关系,老师继承学生
class Teacter extends Student{}
public class StudentTeacter {
public static void main(String[] args) {
	//创建对象1
	Student s=new Student();
	//成员变量赋值
	s.setName("A");
	s.setAge(20);
	//调用成员方法
	s.show(s);
	s.show2();
	//创建对象2
	Teacter t=new Teacter();
	//成员变量赋值
	t.setName("B");
	t.setAge(30);
	//调用成员方法
	t.show(t);
	t.show2();
}
}
执行结果:

姓名:A,年龄:20
我爱Java
姓名:B,年龄:30
我爱Java
3.中国四大美女

/*利用static,减少代码*
 */
class Person{
	String name;
	int age;
	static String country;
	//变量输入姓名,年龄
	public Person(String name, int age) {
		super();
		this.name = name;
		this.age = age;
	}
	//变量输入姓名,年龄,国籍
	public Person(String name, int age,String country ) {
		super();
		this.name = name;
		this.age = age;
		this.country=country;
	}
	public void show(){
		System.out.println("姓名是:"+name+"年龄是:"+age+"国籍是:"+country);
	}
}
public class PersonDemo {
public static void main(String[] args) {
	Person p1=new Person("西施",23,"中国");
	p1.show();
	Person p2=new Person("貂蝉",23);
	p2.show();
	Person p3=new Person("杨贵妃",24);
	p3.show();
	Person p4=new Person("王昭君",25);
	System.out.println("......................");
	p1.country="美国";
	p1.show();
	p2.show();
	p3.show();
	
	
}
}






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值