JAVA面向对象程序设计(1)

JAVA面向对象三大特征(1)

  • 封装
  • 继承
  • 多态

封装

封装(Encapsulation)是面向对象方法的重要原则,就是把对象的属性和操作(或服务)结合为一个独立的整体,并尽可能隐藏对象的内部实现细节。

这样的话看起来比较生涩难懂,所以得具体的看下例子

Demo1.java:

public class Demo1 {
    private String name;
    public void setName(String n){
        if(n.length()>4 || n.length()<2 ){
            System.out.print("Error:can not set name.");
            return;
        }
        this.name = n;
    }
    public void getName(){
        System.out.print(this.name);
    }
}

Test.java:

public class Test {
    public static void main(String args[]){
        Demo1 d = new Demo1();
        d.setName("这是测试的名字");
    }
}

我们运行一下,是如下效果:
image
输出了can not set name.
然而,我们将Demo1.java的代码中的name属性的访问控制符改为public之后,也就是如下:

public class Demo1 {
    public String name;
    public void setName(String n){
        if(n.length()>4 || n.length()<2 ){
            System.out.print("Error:can not set name.");
            return;
        }
        this.name = n;
    }
    public void getName(){
        System.out.print(this.name);
    }
}

我们再将Test.java改成如下这样:

public class Test {
    public static void main(String args[]){
        Demo1 d = new Demo1();
        d.name = "这是测试的名字";
        d.getName();
    }
}

我们来看输出:
image
可以看到,我们成功的绕过了setName方法中对于name属性的值的限制,长度在2到4之间。
这就是封装的一种体现,我们不用提供细节,只为外部的提供一个接口。

继承

继承是面向对象最显著的一个特性。继承是从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并能扩展新的能力。

简单举个例子,Student类应该是Person类的扩展,比如Person类应该有name、age等属性,也应该有walk等方法,但是Student就没有name、age等属性了吗?就不能walk了吗?
这肯定是不对的,Student和Person一样,都可以walk,但是Student应该比Person多一个方法Study(这里的意思不是说人没有学习的能力,这是打个比方),但是我们同时也需要name、age等属性,walk等方法,所以为了提高代码效率,避免代码重写,我们就很自然的用到了继承。
看如下例:
Person.java:

public class Person {
    private String name;
    private int age;
    public void walk(){
        System.out.print("我在走路...\n");
    }
}

Student.java:

public class Student extends Person{
    public void study(){
        System.out.print("我在学习...\n");
    }
}

Test.java:

public class Test {
    public static void main(String args[]){
        Student s = new Student();
        s.walk();
    }
}

看输出:
image

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值