继承概念:简单说就是一个类使用extends来关联另一个已存在的类(API中的或者自己写的),Java继承是面向对象的最显著的特征之一并且一个类只能单继承(只能继承一个 类)不能多继承。
继承特点:继承是单一的;
继承关系是可以传递的;
层次关系鲜明;
总的来说:Java继承是单一的,可以调用父类的方法(一般来说不能调用父类的构造方法),虽然不能多继承,但是Java提供了接口这个概念,来弥补继承的单一性。
</pre></p><p><span style="white-space:pre"></span>例如:</p><pre name="code" class="java"><span style="color:#33cc00;">// 父类</span>
class person{
public void count(){
int x=3,y=4;
System.out.println("x+y="+(x+y));
}
}
<span style="color:#33cc00;">//主类(子类)
//Demo继承的person Demo是子类,person是父类,
//继承使用关键字extends</span>
public class Demo extends person{
<span style="background-color: rgb(255, 255, 255);"><span style="color:#33cc00;">// 主函数</span></span>
public static void main(String[] args) {
// TODO Auto-generated method stub
<span style="color:#33cc00;">// 建立对象demo</span>
Demo demo = new Demo();
<span style="color:#33cc00;">// 使用对象调用父类的方法count()。
</span> demo.count();
}
}
类
类是对一个或几个相似对象的描述,是具有相同属性和方法的一组对象集合。类中的数据称为成员变量,对数据的操作称为成员方法。
类的语法格式:[修饰符]class 类名[extends 父类名] [implements 接口名序列]{
类主体
}
对象
创建对象。在Java中创建对象包括声明对象、为对象分配内存空间两部分。
(1)声明对象格式
类名 对象名;
(2)为对象分配内存空间要使用new运算符和类的构造放法。
格式:对象名 = new 类名([参数列表]);
(3)以上两步可以写到一起
类名 对象名 =new 类名([参数列表]);
抽象类
1. 定义
在Java中用abstract修饰的类称为抽象类,方法为抽象方法,抽象方法只有声明没有具体实现,谁实现抽象类就必须实现里面的所有方法
定义抽象类的格式:
abstract class 类名{
.......
}
定义抽象方法:
abstract 返回值类型 方法名([参数])
如下:
abstract class Employee
{
int basic = 220;
abstract void salary();
}
接口
1. 定义
创建接口的语法如下:
[修饰符]类型 接口名[extends 父接口列表] {
[修饰符]类型 属性名=值;
返回值类型 方法名 (参数列表);
}
2. 接口实现
class 类名 implements 接口名[ ,接口名...555555555555]
注意:修饰接口的修饰符只有public和默认修饰符两种。
可以多重继承,接口只能继承接口,不能继承类。
属性定义时必须赋值,是常量,属性的修饰符默认为final、static。
接口中的方法必须是抽象方法。
封装
封装的目的:
(1)隐藏类的实施细节
(2)迫使用户通过接口去访问数据
(3)增强代码的可维护性
如下:
class Card
{
private String cardNumber = null;
String getNumber(){
return cardNumber;
}
void setNUmber(String cardNumber){
this.cardNumber = cardNumber;
}
}
注意:抽象类不一定要包含抽象方法,但是有抽象方法的类一定是抽象类。
多态
多态的表现形式主要有方法的重载和方法的覆盖
1.方法重载
方法重载实际上就是方法名相同,但是参数不同。
例如:
class Card
{
String cardNumber=null;
Card(){ }
Card(String cardNumber){
this.cardNumber=cardNumber;
}
2.方法覆盖
类继承过程中,子类方法跟父类方法名字相同,并且传递参数完全一样,称子类覆盖父类的方法。
例如:
public class Demo1 extends Animal{
void sound(){
System.out.println("aaaa");
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Demo1 d= new Demo1();
d.sound();
}
}
class Animal{
void sound(){
System.out.println("wangwang");
}
}