------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类。继承可以理解为一个对象从另一个对象获取属性的过程。
如果类A是类B的父类,而类B是类C的父类,我们也称C是A的子类,类C是从类A继承而来的。在Java中,类的继承是单一继承,也就是说,一个子类只能拥有一个父类。
继承通俗的理解就是新创建一个类如果继承了一个类,那么被继承的就是父类,而自己就是子类了。而这个子类可以可以实现并且调用父类的方法。在java中,所以的类都由java.lang.Object类继承而来。所以Object是所有类的父类。
通常继承一个类可以通过Extends关键字来申明这个类是否继承自某一个类。主要Exteds只可以继承Public的属性和方法
/*
* 创建一个类。
*/
class Person
{
public int age ;
public String name;
}
/*
* 继承一个Person。
*/
class zhulang extends Person
{
//可以看到这里我们可以调用父类的方法。
public zhulang()
{
this.name = "zhualng";
this.age = 12;
}
}
还有一种方法可以是想继承。那么就用implements关键字。这个关键字,
Implements关键字使用在类继承接口的情况下, 这种情况不能使用关键字extends。
说到接口我们得先学习一个概念就是抽象类
抽象定义:
抽象类: Java中可以定义没有方法体的方法,该方法的具体实现由子类完 成,该方法称为抽象方法,包含抽象方法的类就是抽象类。
抽象方法的由来:
抽象类的特点
/*
* 抽象类使用
*/
abstract class absDemo
{
//声明抽象方法。
//格式:修饰符abstract 返回值类型 函数名(参数列表) ;
public abstract String name();
}
说完抽象类。那么我们可以来学习一下接口。
为什么要有接口呢?Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。
说到这里接口是一个抽象类。那么我么就会有问题,什么是抽象类呢?
接口并不是类,编写接口的方式和类很相似,但是它们属于不同的概念。类描述对象的属性和方法。接口则包含类要实现的方法。
除非实现接口的类是抽象类,否则该类要定义接口中的所有方法。
接口与类相似点:
接口与类的区别:
接口有以下特性:
接口的声明和实现
当类实现接口的时候,类要实现接口中所有的方法。否则,类必须声明为抽象的类。
类使用implements关键字实现接口。在类声明中,Implements关键字放在class声明后面。
public interface Imytefact
{
//任何类型 final, static 字段
final String name="xuexi";
static int Age =13;
//抽象方法
public void Show();
}
//实现上面的接口
public class instr implements Imytefact
{
//必须实现接口里买的所有方法。
public void Show()
{
//调用接口里面的静态字段。
System.out.println(this.name);
}
}
重写接口中声明的方法时,需要注意以下规则:
在实现接口的时候,也要注意一些规则:
函数覆盖(Override)
函数覆盖的展示
//对象的重载
public class Animal
{
public void move()
{
System.out.println("Animal可以移动");
}
}
//重写父类的方法
public class Mat extends Animal
{
//重写父类的方法
public void move()
{
//调用父类的move()方法。
super.move();
//自己的move()方法
System.out.println("Mat自己的移动方法");
}
}
public static void main(String[] args)
{
Mat mat = new Mat();
mat.move();
}
重载(Overload)
重载(overloading) 是在一个类里面,方法名字相同,而参数不同。返回类型呢?可以相同也可以不同。
每个重载的方法(或者构造函数)都必须有一个独一无二的参数类型列表。
重载规则
具体的代码练习我就不展示了。
public class Overloading {
public int test(){
System.out.println("test1");
return 1;
}
public void test(int a){
System.out.println("test2");
}
//以下两个参数类型顺序不同
public String test(int a,String s){
System.out.println("test3");
return "returntest3";
}
public String test(String s,int a){
System.out.println("test4");
return "returntest4";
}
public static void main(String[] args){
Overloading o = new Overloading();
System.out.println(o.test());
o.test(1);
System.out.println(o.test(1,"test3"));
System.out.println(o.test("test4",1));
}
结语:面向对象就这样看完了。觉得毕老师的课程说得还是不错的。只能说我们想的学习和实践能力有限。没有足够的了解。现在只能了解个一二。希望以后能够好好理解面向对象的真正强大之处。
原文:http://www.cnblogs.com/ganwei/p/4576860.html