Java面对对象思想

一。类的继承
1。存在A类与B类,B类继承A类,B类继续所有A类的属性和方法。来看例子:
Student.java
class Person 
{
      public String name;
      public int age;
      public Person(String name,int age)
     {
        this.name=name;
        this.age=age;
      }
      public Person() //如果不写这个构造函数,看看对类Student有什么影响。
      {
      }
      public void getInfo() 
      {
           System.out.println(name);    
          System.out.println(age);    
      }
}
class Student extends Person
{
      public void study()
      {
              System.out.println("Studding");
      }
      
      public static void main(String[] args)
      {
          Person p=new Person();
          p.name="person";
          p.age=30;
          p.getInfo();
          
          Student s=new Student();
        s.name="student";
        s.age=16;
        s.getInfo();
        s.study();
      }
}
说明:
(1):继承关键字extends实现,继承可以简化类的定义。
(2):Java中只允许单继承,一个子类只能有一个父类,一个父类可以有多个子类。
(3):B类继承A类,C类继承B类,那么C即间接的继承了A类的所有的属性和方法。
(4):子类继承所有父类属性和行为,但是不继承构造方法。但是可以在子类中使用super调用你类的构造方法。
看例子:
class Student extends Person
{
    public Student(String name,int age,String school)
    {
        super(name,age);
        this.school=school;
    }
}
如果子类没有调用父类的构造方法,也没有使用this关键字调用重载构造方法,则创建的子类的实例对象,系统默认调用父类无参数的构造函数
2:子类可以修改从父类继承来的方法,即为方法的重写
例子:
class Person
{
    public String name;
    public int age;
    public void getInfo()
    {
        System.out.println(name);
        System.out.println(age);
    }
}
class Student1 extends Person
{
    String school = new String();    
    public void getInfo()//方法的覆盖
    {
        super.getInfo();//super继承Person类的getInfo方法
        System.out.println(school);
    }
    public static void main(String []args)
    {
        Person p1 = new Person();
        p1.name="Jack";
        p1.age=26;
        p1.getInfo();
        
        Student1 s1 = new Student1();
        s1.name="Marry";
        s1.age=30;
        s1.school="NanKai University";
        s1.getInfo();
    }
}
3.final关键字
(1)适用于修饰类、属性、方法及变量
(2)final修饰的类不被继承。方法不被子类重写
(3)final标记的变量即为常量,只能进行一次赋值
注:其实理解了final这个单词的意思也就好理解了,final当名词用时为结局的意思,当形容词用的时候为最后的,最终的,:)补充一下外语,要不为什么老外学种语言那么容易!
看几个小例子
final int x=5;//必须显示赋值
x=3;//错误的例子,final标记的变量即为常量,只能进行一次赋值
另外public static final x=5;x即为全局变量
二。抽象类与接口
1。抽象方法:在方法前以abstract修饰的方法即为抽象方法,包括抽象方法的类即为抽象类。抽象类也必须以abstract修饰。
抽象方法的格式:abstract 返回值类型 抽象方法(参数列表)
(1)抽象方法和抽象类必须以abstract修饰。
(2)抽象方法只是声明,而不实现。
(3)抽象类不能被实例化,即不能new。
(4)抽象类中所有的抽象方法被子类重写后,抽象类才能被实例化。
(5)抽象类中肯定有抽象方法,但不一定抽象类中全是抽象方法。
例子:
abstract class Test()
{
    abstract void Info()
    {
        
    }
}
2。接口:一个抽象类的所有方法全是抽象方法即为接口,其实接口也发球属于抽象类中一种比较特殊的格式。
(1)以关键字interface标记
(2)接口中只能包括常量(public static fianl也是属于其中)和抽象方法
(3)也只是声明,而没有实现,需要子类的重写
看一个接口的例子
abstract class Test()
{
    abstract void Info()
    {
        
    }
    abstract void Mar()
    {
        
    }
    
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值