Java-面向对象基础

一、继承
1、继承的格式

class 父类 {
}
 
class 子类 extends 父类 {
}

2、继承的特性

  • 子类拥有父类非 private 的属性、方法
  • 子类可以拥有自己的属性和方法,即子类可以对父类进行扩展
  • 子类可以用自己的方式实现父类的方法,即重写
  • Java 的继承是单继承,但是可以多重继承

3、继承的关键字

  • extends关键字
public class Animal {
    private String name;

    public void eat(){
        //方法内容
    }
}

public class Dog extends Animal{

}
  • implements关键字
public interface A {
    public void eat();
}
 
public interface B {
    public void sleep();
}
 
public class C implements A,B {
}
  • super关键字
    实现对父类成员的访问,引用当前对象的父类
  • this关键字
    指向自己的引用
public class Animal {
    public void eat(){
        //方法内容
    }
}

public class Dog extends Animal{
	public void eat(){
        //方法内容
    }
	public void eatTest(){
        super.eat();// super 调用父类方法
        this.eat();// this 调用自己的方法
    }
}
  • final关键字

final 关键字声明类可以把类定义为不能继承的,即最终类;或者用于修饰方法,该方法不能被子类重写:

//声明类
final class 类名 {
	//类体
}

//声明方法
修饰符 final 返回值类型 方法名(){
	//方法体
}

//声明变量
修饰符 final 变量类型 变量名;

二、抽象
1、抽象类

  • 定义
    如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。
  • 特性
    抽象类不能实例化对象
    抽象类必须被继承,才能被使用
public abstract class Animal
{
   private String name;
   public Animal(String name)
   {
      this.name = name;
   }
}

2、抽象方法

  • 定义
    一个类包含一个特别的成员方法,该方法的具体实现由它的子类确定,那么可以在父类中声明该方法为抽象方法

  • 特性
    抽象方法只包含一个方法名,而没有方法体,方法名后面直接跟一个分号
    如果一个类包含抽象方法,那么该类必须是抽象类
    任何子类必须重写父类的抽象方法,或者声明自身为抽象类
    构造方法,类方法(用 static 修饰的方法)不能声明为抽象方法

public abstract class Animal
{
   	private String name;
   	public abstract String animalName();
}

public class Dog
{
	private String name;
   	public String animalName(){
		return "HH";
	}
}

三、封装
1、定义
封装是指一种将抽象性函式接口的实现细节部分包装、隐藏起来的方法
2、特性

  • 良好的封装能够减少耦合
  • 类内部的结构可以自由修改
  • 可以对成员变量进行更精确的控制
  • 隐藏信息,实现细节

3、实例
最熟悉的封装类的例子

public class Animal {
    private String name;

    private Integer age;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }
}

四、多态
1、定义
多态是同一个行为具有多个不同表现形式或形态的能力。多态就是同一个接口,使用不同的实例而执行不同操作
2、特性

  • 消除类型之间的耦合关系
  • 可替换性
  • 可扩充性
  • 接口性
  • 灵活性
  • 简化性

3、实例

public class Test {
    public static void main(String[] args) {
        show(new Cat());  // 以 Cat 对象调用 show 方法
        show(new Dog());  // 以 Dog 对象调用 show 方法

        Animal a = new Cat();  // 向上转型
        a.eat();               // 调用的是 Cat 的 eat
        Cat c = (Cat)a;        // 向下转型
        c.work();               // 调用的是 Cat 的 work
    }

    public static void show(Animal a)  {
        a.eat();//父类抽象方法可直接调用、子类已实现
        // 类型判断
        if (a instanceof Cat)  {  // 猫做的事情
            Cat c = (Cat)a;
            c.work();
        } else if (a instanceof Dog) { // 狗做的事情
            Dog  d = (Dog)a;
            d.work();
        }
    }
}

abstract class Animal {
    abstract void eat();
}

class Cat extends Animal {
    public void eat() {
        System.out.println("吃鱼");
    }
    public void work() {
        System.out.println("抓老鼠");
    }
}

class Dog extends Animal {
    public void eat() {
        System.out.println("吃骨头");
    }
    public void work() {
        System.out.println("看家");
    }
}

文章仅作为个人学习整理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值