您的位置:首页 > 编程语言 > Java开发

JAVA学习笔记——JAVA基础语法(三)——面向对象三大特征

2013-01-29 22:30 826 查看
[b]一、封装[/b]

  功能:其实就是实现代码的复用,屏蔽一些细节

    比如下面这个例子: 我在类Person里面封装了一个方法public void pname(){}这样的话在main方法里面就不用重复使用System.out.println();这句话了,避免了代码的重复使用,成程序看起来比较简洁

public class test{
public static void main(String agrs[]){
Person p1 = new Person();
p1.name = "jack1";
Person p2 = new Person();
p2.name = "jack2";
Person p3 = new Person();
p3.name = "jack3";
Person p4 = new Person();
p4.name = "jack4";

p1.pname(p1);
p2.pname(p2);
p3.pname(p3);
p4.pname(p4);
}
}

class Person{
String name;
public void pname(Person person){
System.out.println(person.name);
}
}


[b]二、继承[/b]

  概念:就是指对象与对象之间的一种关系

  作用:代码的复用、功能的扩展

  在JAVA中使用extends关键字来表示两个类的继承,当子类继承了一个父类(基类、超类)的时候,子类自动拥有父类的所有成员。

  1、方法的重写(voerread)

    是发生在继承关系中的,在父类中被重写的方法和子类中重写的方法必须有相同的方法名、相同的返回值类型、相同的参数列表,子类中重写的方法不能拥有比父类中更加严格的访问修饰符

    例如下面这个简单的例子:

        

public class test{
         public static void main(String[] args){

         Animel animel = new Animel();
         animel.name = "mouse";
         animel.age = "12";
         animel.named();
          Cat cat = new Cat();
         cat.name = "cat";
         cat.age = "13";
         cat.sex = "boy";
         cat.named();

          }
        }
        class Animal{
        String name;
        String age;
        public void named(){
        System.out.println("name is:" + name + "it is age is :" + age);
        }
        }

        class Cat extends Animal{
        String sex;
         public void named(){
        System.out.println("name is:" + name + "it is age is :" + age + "sex is " + sex);
         }
        }


  2、方法的重载(overload)

    发生在同一个类当中,必须拥有相同的方法名,可以拥有不同的返回值类型,但是必须拥有不通的参数列表

    比如下面这个简单的例子加以理解:

      

public class test{
      public static void main(String args[]){
       Numbsum bsum = new Numbsum();
      bsum.sum(20);
      bsum.sum(20,30);
      bsum.sum(20,30,40);
      }
      }

      class Numbsum{
      public void sum(int a){
       System.out.println(a);
      }
       public void sum(int a,int b){
       System.out.println(a+b);
       }
       public void sum(int a,int b,int c){
      System.out.println(a+b+c);
      }
      }


  3、Super关键字

    相当于当前父类对象的引用,每一个子类的对象中都有父类的对象,因为子类自动拥有父类的所有成员;JAVA在构建子类的对象的过程中,要先构建父类的对象,然后再创建子类的对象。

    下面这个框架图把这个抽象的概念形象化的表示出来了:



                                  图 1

    注意:1)、当子类的成员变量和父类的成员变量重名时,需要访问父类的成员变量的时候使用 super.成员变量名 来调用

       2)、重写的过程中,子类重写的方法需要调用父类被重写的方法的时候使用 super.方法名

       3)、如果父类中没有无参数的构造方法时,是不能成功创建子类的对象的,需要在子类构造方法中手动添加父类的构造方法 super.()

        如下简单程序代码说明其原理:

public class test{
public static void main(String[] args){
Student person = new Student();

}
}

class Person{
public Person(int num){

}
}

class Student extends Person{
public Student(){
super(100);
System.out.println("子类对象成功创建");
}
}


    注意:继承中子类创建对象的一些细节过程

       1)、先创建父类对象再创建子类对象

       2)、JAVA是用构造方法来创建对象的

       3)、JAVA要先调用父类的构造方法,再调用子类的构造方法

       4)、JAVA默认调用父类中无参的构造方法

       5)、给父类中添加了一个有参数的显示的构造方法,那么隐式的无参数的构造方法就不存在了

[b]三、多态[/b]

  根据程序执行的时候根据传入的参数决定绑定哪一个方法

  条件:1、要有继承 2、方法的重写 3、父类的引用指向子类的对象
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: