Java三大特性

java(OOP)三大特性

一:封装性

定义

  1. 封装是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问。要访问该类的代码和数据,必须通过严格的接口控制。只有本类中可以使用(更改)私有变量或者私有方法。

实现方式

  1. 对属性的封装:private 属性类型 属性名称; 访问被封装的属性,必须提供getter与setter方法,setter方法:主要进行属性内容的设置与修改,getter方法:主要进行属性内容的取得。
  2. 对方法的封装:private 方法返回值 方法名称(参数列表){},私有方法只有类内部可以使用,提高了安全性和功能性。

封装的优点

1、提高了安全性,防止一些误操作。
2、提高了复用性,封装之后便于调用。
3、信息隐藏,隐藏了实现细节。

示例一

public class Student{
    private String name;
    private int age;public void setName(String name){
      this.name = name;
    }
    public void setAge(int age){
      this.age = age;
    }
    public String getName(){
      return name;
    }
    public int getAge(){
      return age;
    }
    private void setGrade(){
    }
}

二:继承性

定义

  1. 继承是从已有的类中创建新类的过程,被继承的类称为父类(超类),继承父类的类称为子类(派生类)

注意

  1. Java只能实现单继承,也就是一个类只能有一个父类,但是可以通过继承接口的方式实现“多继承”。
  2. 允许多层继承,即:一个子类可以有一个父类,一个父类还可以有其他的父类。
  3. 继承只能继承非私有的属性和方法,且 构造方法不能被继承。

继承的优点

  1. 继承可提高代码的复用性。
  2. 继承可提高代码的稳定性。
  3. 继承让类与类之间产生关系,是多态的前提。

示例二

class Member{
	// 姓名
	public String name;
	// 编号
	public int id;
	// 身份
	public String identity;
	public void my() {
		
	}
}
class Student extends Member{
	public void my() {
		System.out.println("我是学生");
	}
}
class Teacher extends Member{
	public void my() {
		System.out.println("我是老师");
	}
}
public class MainClass {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
        Student s = new Student();
        Teacher t = new Teacher();
        s.my();
        t.my();
	}
}

输出结果:
我是学生
我是老师

三:多态性

定义

  1. 多态是同一个行为具有多个不同表现形式或形态的能力,如同一个类中的同名方法设置不同的形参并实现不同的功能。

  2. 多态就是同一个接口,使用不同的实例而执行不同操作,如同一个接口被多个类继承并重写接口中方法实现不同操作。

实现方式

  1. 编译时多态:方法的重载,重载指的是同一个类中有多个同名方法,当方法的参数不同时,编译时就可以确定调用哪个方法,是同一个类中多态性的表现方式。
  2. 运行时多态:方法的重写,java中子类可以重写父类的方法,同样的方法在父类与子类中有着不同的表现形式。父类的引用可以指向子类对象,程序调用的方法在运行期才动态绑定,运行时才可以确定调用哪个方法,因此称之为运行时多态,是父类与子类之间多态性的表现方式。

多态性优点

  1. 提高了代码的维护性(继承保证)
  2. 提高了代码的扩展性(由多态保证)

示例三

// 运行时多态的例子,编译时多态也就是方法的重载了(例子省略)。
abstract class Animal {  
    abstract void eat();  
}  
  
class Cat extends Animal {  
    public void eat() {  
        System.out.println("吃鱼");  
    }  
    public void work() {  
        System.out.println("抓老鼠");  
    }  
}  
class Dog extends Animal {  
    public void eat() {  
        System.out.println("吃骨头");  
    }  
    public void work() {  
        System.out.println("看家");  
    }  
}
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值