Java三大特性

Java是一种面向对象的程序语言,三大特性:封装性,继承性,多态性。

1.封装性

  将对象的属性和方法封装起来,不需要让外界知道具体实现的细节。封装可以使数据的安全性得到保证。

(1)属性的封装。Java中类的属性访问权限的默认值不是private,要想隐藏该方法或属性,就可以加private修饰符来限制只能在类的内部进行访问。

(2)方法的封装。对于方法的封装,方法公开的是方法的声明(定义),只要知道参数和返回值就可以调用该方法。隐藏方法的实现会使实现的改变对架构的影响最小化。完全的封装是类的属性全部私有化,并且提供一对方法来访问属性。

class Person{
    private String name;

    private int age;

    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 class User{

    public static void main(String[] args) {

       Person p1 = new Person();

       p1.setAge(10);

       p1.setName("zhang");

       System.out.println(p1.getAge());

        System.out.println(p1.getName());

    }

}

Person类中的name和age属性为private,每个属性具有getxxx()和setxxx(),这两个方法为public,User类可以通过setxxx()方法来设置对应的属性。

2.继承性

    继承主要指的是类与类之间的关系。Java中的继承使用extends关键字,并且Java中只允许单继承,子类只能继承在父类中可以访问的属性和方法,实际上父类中私有的属性和方法也会被子类继承,只是子类无法访问。 

class Animal{

    public String name;

    private int id;

    public void eat(){

        System.out.println(name+" 正在吃");
    }
    public void sleep(){
        System.out.println(name+"正在睡");
    }

}

class  Cat extends Animal{

    public void shout(){
        System.out.println(name+" 正在叫");

    }

}
public class Dog {

    public static void main(String[] args) {

        Cat c1 = new Cat();

        c1.sleep();
    }

}

3.多态性

多态是把子类型的对象主观的看作其父类型的对象,那么父类型就可以是很多种类型。编译时类型指被看作的类型,是主观认定的。运行时类型指实际的对象实例的类型,是客观的,不可改变。

动态有以下特性:对象实例确定后不可改变;只能调用编译时类型所定义的方法;运行时会根据运行时类型去调用相应类型中定义的方法。

class Animal{

    int age  = 10;

    public void eat(){

        System.out.println(" 动物吃东西");
    }

    public void shout(){

        System.out.println("动物在叫");
    }
    public static void run(){

        System.out.println("动物在奔跑");
    }

}

class  Cat extends Animal{

    String name =  "小猫";


    public void eat() {

        System.out.println("猫在吃东西");
    }

    public static void run(){
        System.out.println("猫在奔跑");
    }
    public void watchDoor(){

        System.out.println("猫在看门");
    }

}
public class Dog {

    public static void main(String[] args) {

        Animal a1 = new Cat();

        a1.eat();

        a1.shout();

        a1.run();

        System.out.println(a1.age);


    }

}

Cat类继承了Animal类。   

Cat类重写了父类的两个方法,其中eat()是非静态的,run()是静态的。

父类数据类型的引用指向子类对象,即Animal a1 = new Cat()。

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值