Java面向对象

一:面向对象的三大特性

1.1继承

继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。
继承的语法:

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

注意:

java中支持多重继承:
public class A(){...}
public class B extends A(){...}
public class C extends B(){...}

但不支持多继承
public class A(){...}
public class B(){...}
public class C extends A,B(){...} //不支持,报错

继承的特性


 1. 子类拥有父类非 private 的属性、方法。
 2. 子类可以拥有自己的属性和方法,即子类可以对父类进行扩展。
 3. 子类可以用自己的方式实现父类的方法。
 4. Java 的继承是单继承,但是可以多重继承,单继承就是一个子类只能继承一个父类,
    多重继承就是,例如 A 类继承 B 类,B 类继承 C 类,所以按照关系就是 C 类是 B 类的父类,B 类是 A 类的父类(这是 Java 继承区别于 C++ 继承的一个特性)。
 5. 提高了类之间的耦合性(继承的缺点,耦合度高就会造成代码之间的联系越紧密,代码独立性越差)。

1.2封装

封装性:实现细节部份包装、隐藏起来的方法。

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

实现封装的步骤:
    1.修改属性的可见性来限制对属性的访问(一般限制为 private)。
    2.对每个值属性提供对外的公共方法访问,也就是创建一对赋取值方法,用于对私有属性的访问。
    

1.3多态

多态:一种是编译时多态,另外一种是运行时多态,编译时多态是通过方法的重载来实现的,运行时多态是通过方法的重写来实现的。

public class A(){
	public void haha(){
        System.out.println("hello lh");
    }
}
public class B extends A(){
	//多态的写法
	A a = new B();
	a.haha();
}

二:类

1.1类的创建

类的定义格式:

class 类名称{ 
    成员属性 
    成员方法 
}

2,注意事项

 类必须编写在.java文件中。
 一个.java文件中, 可以存在N个类, 但是只能存在一个public修饰的类。
 .java文件的文件名称 必须 与public修饰的类名 完全一致;

三:方法

1.1方法定义

修饰符 返回值类型 方法名(参数类型 参数名){
    方法体
    return 返回值;
}

方法包含一个方法头和一个方法体。下面是一个方法的所有部分:

**修饰符:修饰符这是可选的,告诉编译器如何调用该方法。定义了该方法的访问类型。
**返回值类型 :方法可能有返回值。如果没有返回值,这种情况下,返回值类型应设为 void。
**方法名:是方法的实际名称。方法名和参数表共同构成方法签名。
**参数类型:参数像是一个占位符。当方法被调用时,传递值给参数。这个值被称为实参或变量。参数列表是指方法的参数类型、顺序和参数的个数。参数是可选的,方法可以不包含任何参数。
**方法体:方法体包含具体的语句,定义该方法的功能

1.2方法的调用

Java 支持两种调用方法的方式,根据方法是否返回值来选择。

当方法返回一个值的时候,方法调用通常被当做一个值。例如:
int larger = max(30, 40);

如果方法返回值是 void,方法调用一定是一条语句。例如,方法 println 返回 void。下面的调用是个语句:
System.out.println("Hello World");

1.3构造方法

每个类都有构造方法。如果没有显式地为类定义任何构造方法,Java 编译器将会为该类提供一个默认构造方法。
在创建一个对象的时候,至少要调用一个构造方法。构造方法的名称必须与类同名,一个类可以有多个构造方法。

public class Puppy{
	//类默认有的构造方法
    public Puppy(){
    }
    public Puppy(String name){
        // 这个构造器仅有一个参数:name
    }
}

四:访问权限关键字

访问权限控制的等级,从最大权限到最小权限依次为:

public > protected > default(没有任何关键字)> private

访问权限

五:接口

接口,不能实例化;不能包含任何非常量成员,任何 field 都是隐含着 public static final 的意义;同时,没有非静态方法实现,也就是说要么是抽象方法,要么是静态方法。

java中实现接口的关键字是implements,如果实现了接口,就要实现接口中的全部方法,否则报错

六:抽象类

抽象类是不能实例化的类,用 abstract 关键字修饰 class,其目的主要是代码重用。除了不能实例化,形式上和一般的 Java 类并没有太大区别,可以有一个或者多个抽象方法,也可以没有抽象方法。抽象类大多用于抽取相关 Java 类的共用方法实现或者是共同成员变量,然后通过继承的方式达到代码复用的目的。


    1.抽象类不能被实例化,如果被实例化,就会报错,编译无法通过。只有抽象类的非抽象子类可以创建对象。
    2.抽象类中不一定包含抽象方法,但是有抽象方法的类必定是抽象类。
    3.抽象类中的抽象方法只是声明,不包含方法体,就是不给出方法的具体实现也就是方法的具体功能。
    4.构造方法,类方法(用 static 修饰的方法)不能声明为抽象方法。
    5.抽象类的子类必须给出抽象类中的抽象方法的具体实现,除非该子类也是抽象类。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值