关于继承与多态
来源:http://www.7dit.com 作者:7dit 发布日期:2008-09-19 00:00:01 点击量:502
/********************父类的父类**************************/
public class
ParentofParent{
int parenta;
ParentofParent(int
a){
this.parenta=a;
}
public void
printpp(){
System.out.println("我是父类的父类");
}
}
/********************父类**************************/
public
class Parent extends ParentofParent{
public int a;
Parent(int
a){
super(a);
this.a=a;
}
public void
test(){
System.out.println("属性a的值为:"+a);
}
public void
printp(){
System.out.println("我是父类");
}
}
/********************接口一**************************/
public
interface MyInterface1 {
public void show1();
//接口中仅能声明方法原形。不能有属性以及方法的具体内容。这点和抽像类有本质的区别。
//相同点则是接口的方法和抽像类中的抽像方法都需要子类重写。
}
/********************接口二**************************/
public
interface MyInterface2 {
public void
show2();
}
/********************关于final类**************************/
public
final class FinalClass
// final类不能再被子类继承
{
public final int
i=5;
}
/********************关于抽象类**************************/
public
abstract class AbstractChild {
int abs_a=1; //抽象类也能有属性,当被承时能传递给子类。
public
abstract void abs();
//抽象方法一样不能有具体内容,并且只能存在于抽象类中,并且必需在子类中重写
//而在非抽象类中则必需有方法主体,如果是空方法也要用{}标注出方法体。
public
void
print(){
System.out.println("抽象类也可以有具体的方法");
}
}
/********************子类的继承**************************/
public
class Child extends Parent implements MyInterface1,MyInterface2{
Child(int
a){
super(a);
//1.父类中构造函数为有参构造,则子类一定要为父类进行构造。用super()调用父类的构造函数。
}
public void
test(){
System.out.println("子类中a值为:"+a);
//子类对父类方法进行重写,其形态参数必需一致,否则则是方法的重载或者新方法。
super.test();
//在子类中调用父类的方法只能在子类方法中调用,不能直接调用。
}
public void
print(){
System.out.println("我是子类");
}
public void
show1(){
System.out.println("接口1的方法实现");
}
public void
show2(){
System.out.println("接口2的方法实现");
}
}
/********************关于静态类**************************/
public
class StaticTest {
public static int i=2;
public static void
print(){
System.out.println("静态方法无需实例对象");
}
public int
j=3;
}
/********************测试类**************************/
class
Test {
public static void main(String[] args) {
Child mytest=new
Child(1);
mytest.printpp();
//类不能同时继承两个类。但是可以多层继承。
mytest.printp();
mytest.print();
mytest.show1();
mytest.show2();
ParentofParent
mytest1 = new Child(1);
//用父类进行声明时,子类中实现的接口是无法调用的。
StaticTest.print();
//静态方法无需实例对象即可调用
StaticTest.i=3; //静态属性同样无需实例对象.
StaticTest newTest=new
StaticTest();
System.out.println(newTest.i);//对象中的静态属性与类中的属性指向同一内存地址,都位于静态区中。
FinalClass
finalobj=new
FinalClass();
System.out.println(finalobj.i+"这是一个final属性,也可以看作常量,是无法再进行更新的");
}
}
public class
ParentofParent{
int parenta;
ParentofParent(int
a){
this.parenta=a;
}
public void
printpp(){
System.out.println("我是父类的父类");
}
}
/********************父类**************************/
public
class Parent extends ParentofParent{
public int a;
Parent(int
a){
super(a);
this.a=a;
}
public void
test(){
System.out.println("属性a的值为:"+a);
}
public void
printp(){
System.out.println("我是父类");
}
}
/********************接口一**************************/
public
interface MyInterface1 {
public void show1();
//接口中仅能声明方法原形。不能有属性以及方法的具体内容。这点和抽像类有本质的区别。
//相同点则是接口的方法和抽像类中的抽像方法都需要子类重写。
}
/********************接口二**************************/
public
interface MyInterface2 {
public void
show2();
}
/********************关于final类**************************/
public
final class FinalClass
// final类不能再被子类继承
{
public final int
i=5;
}
/********************关于抽象类**************************/
public
abstract class AbstractChild {
int abs_a=1; //抽象类也能有属性,当被承时能传递给子类。
public
abstract void abs();
//抽象方法一样不能有具体内容,并且只能存在于抽象类中,并且必需在子类中重写
//而在非抽象类中则必需有方法主体,如果是空方法也要用{}标注出方法体。
public
void
print(){
System.out.println("抽象类也可以有具体的方法");
}
}
/********************子类的继承**************************/
public
class Child extends Parent implements MyInterface1,MyInterface2{
Child(int
a){
super(a);
//1.父类中构造函数为有参构造,则子类一定要为父类进行构造。用super()调用父类的构造函数。
}
public void
test(){
System.out.println("子类中a值为:"+a);
//子类对父类方法进行重写,其形态参数必需一致,否则则是方法的重载或者新方法。
super.test();
//在子类中调用父类的方法只能在子类方法中调用,不能直接调用。
}
public void
print(){
System.out.println("我是子类");
}
public void
show1(){
System.out.println("接口1的方法实现");
}
public void
show2(){
System.out.println("接口2的方法实现");
}
}
/********************关于静态类**************************/
public
class StaticTest {
public static int i=2;
public static void
print(){
System.out.println("静态方法无需实例对象");
}
public int
j=3;
}
/********************测试类**************************/
class
Test {
public static void main(String[] args) {
Child mytest=new
Child(1);
mytest.printpp();
//类不能同时继承两个类。但是可以多层继承。
mytest.printp();
mytest.print();
mytest.show1();
mytest.show2();
ParentofParent
mytest1 = new Child(1);
//用父类进行声明时,子类中实现的接口是无法调用的。
StaticTest.print();
//静态方法无需实例对象即可调用
StaticTest.i=3; //静态属性同样无需实例对象.
StaticTest newTest=new
StaticTest();
System.out.println(newTest.i);//对象中的静态属性与类中的属性指向同一内存地址,都位于静态区中。
FinalClass
finalobj=new
FinalClass();
System.out.println(finalobj.i+"这是一个final属性,也可以看作常量,是无法再进行更新的");
}
}
标签:
Java |
Copyright © 2005 奇点中文网--7dit.com
闽ICP备05001292号
闽ICP备05001292号
