面向对象的三大特性

面向对象的三大特性:

1、封装:
封装是面向对象编程的核心思想,将对象的属性和行为封装起来,其载体就是类,类通常对客户隐藏细节。
实现:
代码全在main方法中实现,代码完全暴露可以随意修改

public class School {
	public static void main(String[] args) {
		String teacherName="麦老师";
		System.out.println("请麦老师讲课");
		System.out.println(teacherName+"讲封装");
		System.out.println(teacherName+"讲继承");
		System.out.println(teacherName+"讲多态");
	}
}

将主要代码封装成一个类,只能通过调用对象成员方法来实现,我们也就无法修改了

public class School {
	public static void main(String[] args) {
	Teacher teacher=new Teacher();
	teacher.teach();
	}
	}
	class Teacher{
		 String teacherName="麦老师";
		      void teach() {
				System.out.println("请麦老师讲课");
				System.out.println(teacherName+"讲封装");
				System.out.println(teacherName+"讲继承");
				System.out.println(teacherName+"讲多态");
		 };
	}

2、继承:
继承通过extends关键字,可以让子类继承父类的属性和方法,举个例子,计算机有台式机和笔记本电脑,台式机和笔记本都是计算机的子类。 StringBuilder、 StringBuffer这两个类都继承自AbstractStringBuilder类,所有类的父类–Object类。继承可以提高代码的重用率。
一个子类只能继承自一个父类,一个父类可以被多个子类继承。
如果子类重写了父类的方法,如果还想在子类的方法中实现父类原有的方法就要使用super关键字
继承并不只是扩展父类的功能,还可以重写父类的成员方法(覆盖)
方法覆盖的原则:

  • 有继承关系
  • 相同方法名相同参
  • 返回值类型比父类的方法小
  • 异常类型分不能比父类的方法大
  • 访问权限修饰符不能比父类的方法小
    代码实现:
 public class MobilePhone {
void kind() {
	System.out.println("小米手机");
	}
}
   class Pad extends MobilePhone{//extends继承
	void kind() {
		System.out.println("ipad");
	}	
}
public class App {
public static void main(String[] args) {
	MobilePhone mobilePhone=new MobilePhone();
	mobilePhone.kind();
	Pad pad=new Pad();
	pad.kind();
	MobilePhone m=new Pad();
	m.kind();
}
}

多态:
多态性指“一种定义,多种实现”。
向上转型:
1、可以把一个父类(接口)的引用指向一个子类的实例,称为向上造型,是多态的典型表现
2、向上造型后,只能使用接口或父类的方法,不能使用子类实例的方法
3、调用时,真正执行的是子类(或实现类)的方法
向下转型:
1、 把上层类型转换为下层的类型,需要通过(目标类型)方式来实现
2、向下造型往往是为了使用下层类型的方法或属性
3、向下造型不总是安全的,可能抛出 java.lang.ClassCastException 造型异常
代码实现:

public class UFO implements Aircraft{
@Override
public void fly() {
System.out.println("UFO飞行");
};	
}

public class Plane implements Aircraft{
	@Override
	public void fly() {
	System.out.println("飞机飞行");	
	}
}
public interface Aircraft {
 void fly();
	
}
public abstract class  Weapon {
public abstract void strike();
}
public class Lkatana extends Weapon{
	@Override
	public void strike() {
	System.out.println("太刀");
	}
}

public class Pistol extends Weapon{

	@Override
	public void strike() {
		System.out.println("手枪");
		
	}
 public void materials() {
	 System.out.println("子弹");
 }
}
public class App {
public static void main(String[] args) {
	Aircraft aircraft=new Plane();
	aircraft.fly();
	
	Aircraft aircraft2=new UFO();
	aircraft2.fly();
	
	Weapon weapon=new Pistol();
	weapon.strike();
	
	Weapon weapon1=new Lkatana();
	weapon1.strike();
	//向下造型
	Pistol pistol=(Pistol) weapon ;
	pistol.strike();
	pistol.materials();
	 Animal animal =new Dog() ;
//	Cat cat= (Cat) animal;	
	animal.cry();
}}
class Animal{
	void cry() {System.out.println("动物叫");};
};
class Dog extends Animal{
	public void cry() {System.out.println("狗叫");};
};
class Cat extends Animal {
	public	void cry() {System.out.println("喵叫");};
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值