Java 语言的特性

Java 语言的特性

  Java 是一款面向对象的语言,Java 语言的最重要三大特征是:封装、继承、多态。在学习Java语言是对三大特性的学习尤为重要,以下是在学习过程中,所学习了解到的相关内容。
  下面对三大特征进行进一步说明:

封装

  封装指的是把一个对象属性私有化,同时提供一些可以给外界访问该属性的方法。比如写一个类时会用 private 修饰属性,用 public 修饰的 set 和 get 方法提供外界访问和修改属性的方法。

public class Example{
	private int i;
	**加粗样式**public void set( int x ){
		i = x;
	}
	public int get(){
		return this.i;
	}
}

  Java 中通过访问修饰符来控制类中每个成员和方法的访问权限,访问权限修饰符主要有三种public、protected、private,如果不写访问权限修饰符,则表示它是包访问权限,有些地方也会称为 friendly。

  • public:对所有类可见,类、接口、变量、方法都可以使用。
  • protected:对同一包内的类和所有子类可见,变量、方法可以使用。
  • private:在同一类内可见,变量、方法可以使用。
  • 包访问权限(什么也不写):同一包内可见,类、接口、变量、方法都可以使用。

  以上四种权限从最大权限到最小权限分别是:
  public > protected > 包访问权限 > private

修饰符类内部同包子类任何地方
publicYesYesYesYes
protectedYesYesYes
包访问权限YesYes
privateYes

继承

  继承是指使用已经存在的类作为基础建立新的类。

  • 在继承的类中,子类拥有父类的所有属性和方法,但是父类中的私有属性和方法子类无法访问
  • 此外子类可以拥有自己的属性和方法。

多态

  多态是指同一个行为具有多个不同表现形式或形态的能力。

  • Java 中有两种多态的实现形式:继承和接口。
  • 最常见的一种多态就是 List 集合了:
     List list=new ArrayList()

  上面的代码就是多态的一种实现形式。从代码上来看,就是父类的对象变量调用了子类或者调用了接口实现类。

Java 中多态的实现需要具备三个必要条件:继承、重写以及向上转型

  • 继承:多态中需要存在有继承关系的父类和子类,或是类与接口之间的实现关系。
  • 重写:子类对父类中的某些方法进行重写,当调用这些方法时就会调用子类中的方法。
  • 向上转型:多态中需要将子类的引用赋给父类对象。

  多态的作用是消除类型间的耦合关系,多态不仅简化了代码,当要增加新的功能时,只需要新建一个类继承父类即可,不用修改其他类的代码,增强代码的扩展能力。

下面给出一个典型的例子,相信大家在java学习中经常遇到:
 首先定义所有动物的公共父类 Animal:

public class Animal {
    private String message;

    public Animal(String message) {
        this.message = message;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    public void talk(){
        System.out.println("动物的叫声");
    }
}

 创建继承了 Animal 类的 Dog 类,该类调用父类构造方法,重写 talk 方法。

public class Dog extends Animal {
    public Dog(String talk) {
        super(talk);
    }

    @Override
    public void talk() {
        System.out.println("狗的叫声:"+super.getMessage());
    }
}

 创建继承了 Animal 类的 Cat 类,该类调用父类构造方法,重写 talk 方法。

public class Cat extends Animal {
    public Cat(String message) {
        super(message);
    }

    @Override
    public void talk() {
        System.out.println("猫的叫声:"+super.getMessage());
    }
}

 在 Main 方法中分别使用多态的调用方式生成 Dog 和 Cat 对象。

public class HelloWorld{
    public static void main(String[] args) {
        Animal dog=new Dog("汪");
        Animal cat=new Cat("喵");
        dog.talk();
        cat.talk();
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值