二、面向对象

 

面向对象是JAVA语言与其他语言的最大区别,也是JAVA语言最大的特征,它将复杂的问题简单化,从而提高效益,节约成本。

面向对象的的三大特征:继承、多态、封装

 

继承

当多个类中存在相同属性和行为时,将这些相同的属性和行为抽取到单独一个类中,这个类是父类。那么再定义属性和行为时只要继承这个父类即可。这个就叫做继承。

继承的注意点:

1、只能单继承,为了弥补这个不足,JAVA中提供了接口(后面会有)

2、子类拥有父类的属性和方法,并且可以在此基础上拓展出自己的方法

3、父类的构造方法不能被继承,子类默认继承父类的无参构造方法,当父类没有无参构造方法时,子类需要使用super来显示的调用父类的构造方法

示例代码:

                  class Person{
                            String name;
                            int age;     
                            Person(){}
                            public void sleep(){
                                    System.out.println("睡觉");
                            }
                            public voideat(){
                                    System.out.println("吃饭");
                            }
                   }
                   class Student extendsPerson{           //学生继承人
                            int id;                  //学号
                            public voidstudy(){
                                    System.out.println("学习");
                            }

                            public void eat(){
                                    System.out.println("吃汉堡");
                            }

                   }

多态:

事物的多种形态:重载和对象的多态,多态我觉得主要是为了日后修改代码方便,便于维护。

多态的特点:

1、代码可以替换

2、扩充方便

3、简化代码

4、但是并不能提高代码运行效率

 

 

示例代码:

class A{

method(){

System.out.println("a");}

  }

class Bextends A{

method(){

System.out.println("b");

}

}

class test{

Pubic static void main(String[] args){

A test =new B();

test.method();

}

//执行以后输出的是:b。原因是:父类引用(A)指向子类对象(B),这个引用调用的是子类的方法,而不是父类A的方法;

 

继承实现多态其实原理类似:

interfaceA{

method();

}

class Bimplements A{

method(){

System.out.println();

}

}

class test{

Pubic static void main(String[] args){

A test =new B();

test.method();

}

}

//此处便会使用java的多态,B实现了A,虽然=前面是A test,但实际上生成的确是B的对象,所以调用它的方法,同继承中的父类对象指向子类对象原理相同,只是此处为继承;

封装

封装是指隐藏对象的属性和方法,只对外提供一个公共的访问方式,举个例子就是电脑主机,对外提供了USB接口,电源开关等等但是机箱内部的原作原理我们不必要知道,这就是封装的原理。

封装特点:

将变化隔离;便于使用;提高重用性;提高安全性。

示例代码:

class Person
{
         private int age;
         public void speak()//把年龄封装起来.不让对象直接访问                                                                  //通过关键字对变量修饰private
         {
                  System.out.println("age="+age);
         }
}
class Person Demo
{
         public static void main(String[]args)
         {
                   Person p=new Person();
                   p.age=20;//访问不到
                   p.speak();//使用对外提供的公共方法访问
         }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值