java基础 继承、封装、多态、抽象详解

Java继承、封装、多态、抽象

代码开发的原则:

低耦合、高内聚

耦合:类与类之间的关系;内聚:为类自己完成事件的能力;

Java继承

继承:使用关键字extends实现,是类与类之间的关系,与现实生活的中的父子继承关系本质相似,为一个类从另一个类中获取属性和方法的过程;

1、单继承性

a) Java中一个类仅且只能继承一个类中的属性和方法,在子类中进行属性或方法的扩展;

b) 优势:提过了代码的复用性和可维护性,实现多态的前提条件,使类与类之间产生关系。

c) 弊端:由于类与类之间的关系,使得类的耦合性增强,改变父类时可能对子类造成影响;

d) 实例:

package cn.hxzy.testExtend;

public class Test {
	public static void main(String[] args){
		Person teacher = new Teacher();
		teacher.say();
		
		Person student = new Student();
		student.say();
	}
}

class Person {
	String name;
	int age;
	String sex;
	
	void say(){
		System.out.println("hello world!");
	}
}

class Student extends Person {
	String hobby;
	
	void doing(){
		System.out.println("好好学习!");
	}
}

class Teacher extends Person {
	String job;
	
	void teach(){
		System.out.println("教书育人");
	}
}

2、多继承性

a) Java是通过实现接口(interface)来实现类的多继承性的;

b) 实现的接口与接口间使用”,”进行隔开;

c) 实例:

public class TtesIn implements ActionListener,MouseListener{

	@Override
	public void mouseClicked(MouseEvent e) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void mousePressed(MouseEvent e) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void mouseReleased(MouseEvent e) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void mouseEntered(MouseEvent e) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void mouseExited(MouseEvent e) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void actionPerformed(ActionEvent e) {
		// TODO Auto-generated method stub
		
	}
}

Java封装

封装:指利用抽象数据类型将数据及基于数据的操作封装在一起,构成相互不可分割的独立实体,数据及方法被保留在对象的内部,只保留一些对外的接口与外界建立联系;

优势:良好的封装可以降低代码的耦合性,提高内聚性;提高代码的可维护性,类内部的结构可以任意的修改;隐藏信息,实现细节,是代码简明;

 

Java多态

多态:指一个类可能存在多种不同的存在形式:例如obj类既是people的父类同时也是teacher的父类,可以通过父类引用子类实现不同的表现形式;

1、多态存在的三个条件:

类与类间存在继承关系;类中实现方法的重写;父类变量引用子类对象;

实例:

public static void main(String[] args){
		Person teacher = new Teacher();
		teacher.say();
		
		Person student = new Student();
		student.say();
	}

2、使用多态形式调用代码的原则:

a) 检查父类中是否存在要调用的方法或属性,如果存在则之间调用;如果没有则编译错误;

b) 检查父类中的方法是否在子类中被修改覆盖,如果覆盖则调用子类中的方法;

3、静态和动态绑定

a) 静态绑定:如果方法的修饰符是private、static、final(static和final将在后续讲解),或者是构造方法,那么编译器将可以准确地知道应该调用哪个方法,我们将这种调用方式 称为静态绑定(static binding)。

b) 动态绑定:调用的方法依赖于对象的实际类型, 并在运行时实现动态绑。

4、多态对象的类型转换

a) 类间存在继承关系,子类转换为父类为向上转型,父类转换为子类为向下转型,但是父类不能直接强制转换为子类,需要通过先将子类转换为父类,然后在将该父类对象转换为子类,实现向下转型,否则会出现java.lang.ClassCastException的类转换异常;

 

Java抽象

抽象:使用abstract修饰的类,内部方法只有方法名,不存在方法体。需要在子类中继承使用,完成完成方法的实现;其中包含一个或多个抽象方法的类也必须被声明为抽象类。使用 abstract 修饰符来表示抽象方法和抽象类。抽象类除了包含抽象方法外,还可以包含具体的变量和具体的方法。类即使不包含抽象方法,也可以被声明为抽象类,防止被实例化。

实例:

abstract class Person {
	String name;
	int age;
	String sex;
	
	public abstract void say();
}

class Student extends Person {
	String hobby;
	
	void doing(){
		System.out.println("好好学习!");
	}
	//子类中实现父类的抽象方法
	@Override
	void say(){
		// TODO Auto-generated method stub
		System.out.println("hello world!");
	}
}


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值