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

JAVA面向对象2

2020-04-05 07:27 856 查看

一、继承
定义子类:
下面是由继承 Employee 类来定义 Manager 类的格式,关键字 extends 表示继承。
public class Manager extends Employee {
添加方法和域…
}
• 子类可以从父类继承属性和方法
• 子类可以提供自己单独的属性和方法

方法的重写(override)
在子类中可以根据需要对从基类中继承来的方法进行重写。
重写方法必须和被重写方法具有相同方法名称、参数列表和返回类型。
重写方法不能使用比被重写方法更严格的访问权限。(由于多态)

public class TestOverride {
public static void main(String[] args) {
Animal animal = new Animal(); animal.shout();
Dog dog = new Dog();
dog.shout();
}
}
class Animal{
void shout(){
System. o u t.p rin tln (" 发 出 声 音 ! ");
}
}
class Dog extends Animal {
void shout(){
System. o u t.p rin tln (" 旺 旺 旺 ! ");
}
}

Object类
• Object类是所有Java类的根基类
• 如果在类的声明中未使用extends关键字指明其基类,则默认基类为Object类
public class Person {

}
等同于:
public class Person extends Object{

}
二、封装
1、封装的作用和含义?
隐藏对象内部的复杂性,只对外公开简单的接口。便于外界调用,从而提高系统的可扩 展性、可维护性。
我们程序设计要追求“高内聚,低耦合”。
• 高内聚 :就是类的内部数据操作细节自己完成,不允许外部干涉;
• 低耦合 :仅暴露少量的方法给外部使用。
2、使用访问控制符,实现封装
• 成员(成员变量或成员方法)访问权限共有四种:
• public 公共的
可以被项目中所有的类访问。(项目可见性)
• protected 受保护的
可以被这个类本身访问;
同一个包中的所有其他的类访问;
被它的子类(同一个包以及不同包中的子类)访问
• default/friendly 默认的/友好的(包可见性)
被这个类本身访问;
被同一个包中的类访问。
• private 私有的
只能被这个类本身访问。(类可见性)

• 类的访问权限只有两种•
public 公共的
可被同一项目中所有的类访问。 (必须与文件名同名)
default/friendly 默认的/友好的
可被同一个包中的类访问。
三、多态
多态性是OOP中的一个重要特性,主要是用来实现动态联编的,换句话说,就是程序的最终状态只有 在执行过程中才被决定而非在编译期间就决定了。这对于大型系统来说能提高系统的灵活性和扩展性。
• java中如何实现多态?使用多态的好处?
引用变量的两种类型:
编译时类型(模糊一点,一般是一个父类)-----由声明时的类型决定。
运行时类型(运行时,具体是哪个子类就是哪个子类)---- 由实际对应的对象类型决定。
多态的存在要有3个必要条件:要有继承,要有方法重写,父类引用指向子类对象。

class Animal {
int age=10;
public void shout(){
System.out.println("叫了一声!");
}
}
class Dog extends Animal {
int age=28;
public void shout() {
System.out.println("旺旺旺!");
}
public void gnawBone(){
System.out.println(“我在啃骨头");
}
}
class Cat extends Animal {
int age=18;
public void shout() {
System.out.println("喵喵喵喵!");
}
}

四、final关键字
final可以用来修饰变量,方法,类。
1、修饰变量:变量一旦被初始化便不可改变,相当定义了一常量。
eg: final int x=3; • x=4;
2、修饰方法:final方法是在子类中不能被覆盖的方法
eg:final returnType methodName(paramList){…}
final void eat() { … }
3、修饰类:final类是无法被任何类继承的。
eg:final class finalClassName{ … }
final class Person{ … }
五、super关键字
super是直接父类对象的引用。
可以通过super来访问父类中被子类覆盖的方法或属性。

public class Test {
public static void main(String[] args) {
new ChildClass().f();
}
}
class FatherClass {
public int value;
public void f(){
value = 100;
System.out.println("FatherClass.value="+value);
}
}
class ChildClass extends FatherClass {
public int value;
public void f() {
super.f();
value = 200;
System.out.println("ChildClass.value="+value);
System.out.println(value);
System.out.println(super.value);
}
}
  • 点赞
  • 收藏
  • 分享
  • 文章举报
XX@NN 发布了7 篇原创文章 · 获赞 1 · 访问量 267 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: