Java基础知识

抽象类

抽象方法

抽象方法,只声明而未实现(也就是说没有方法体)的方法我们称为抽象方法,所有的抽象方法都需要用abstract关键字声明。
抽象方法可以只声明,而不需要方法体。
抽象方法只能存在于抽象类中

抽象类定义:

抽象类和普通类相比,区别在于抽象类带有抽象方法所以抽象类也需要用abstract关键字声明。

抽象类定义规则:

1.抽象类和抽象方法必须用abstact关键字来修饰。

2.抽象类不能直接实例化,也就是不能直接使用new关键字产生对象。

3.抽象方法定义时,只需要声明,不需要实现。

4.含抽象方法的类必须被声明为抽象类,抽象类的子类必须实现所有的抽象方法后,才能被实例化,否则这个子类还是个抽象类。

那些类应该成为抽象类

类名涉及的范围很广的类。
例如:动物类就不应该被初始化,而应该让它的子类被初始化

java小程序

package Day5;

//import com.sun.org.glassfish.gmbal.ManagedObject;

public class Relativelaout {

    String view;

    //在显示一个视图时要告诉系统该视图的位置

    public void show(float leftMergin,float topMergin,float rightMergin,float bottomMergin)
    {
        LayoutParams layoutParams=new LayoutParams(leftMergin,topMergin,rightMergin,bottomMergin);
        System.out.println("视图"+view+"显示出来了");
        System.out.println("left"+leftMergin);
        System.out.println("right"+rightMergin);
        System.out.println("top"+topMergin);
        System.out.println("bottom"+bottomMergin);
    }
    //定义一个内部类
    class LayoutParams
    {
        float leftMergin;
        float topMergin;
        float rightMergin;
        float bottomMergin;
        public LayoutParams(float leftMergin,float topMergin,float rightMergin,float bottomMergin)
        {
            this.bottomMergin= bottomMergin;
            this.rightMergin= rightMergin;
            this.topMergin= topMergin;
            this.leftMergin= leftMergin;
        }



    }

}
class testLayout{

    public static void main(String[] args)
    {
        //创建一个视图
        Relativelaout rl=new Relativelaout();
        rl.view="分享按钮";
        //显示这个视图
        //准备好相关的数据
        //
//        Relativelaout.LayoutParams perams=new  Relativelaout.LayoutParams(20,20,20,20); //生产一个内部类对象
//        rl.show(perams);
//        //觅名对象,只使用一次
//        rl.show(new  Relativelaout.LayoutParams(20,20,20,20));
        rl.show(20,20,20,20);
        Testinner tl=new Testinner();
        tl.test();//调用此方法产生Testinner的内部类对象
    }
}

class Testinner
{
    int a;
    int b;
    inner Inners;


    class inner
    {
        //非静态的内部类可以访问外层类的属性和方法
        public inner()
            {
                a=20;
                b=30;

                show();
            }

    }

    public void test()
    {
        Inners=new inner();
    }

    public void show()
    {
        System.out.println(a+b);
    }
}
/**
 * 继承 A extends B
 *          A继承了父类B的非私有的属性和方法
 *          还可以添加自己的属性和方法
 *
 *  所有的类都继承于Object
 *  在子类里调用父类的方法使用super
 *什么时候需要调用父类的方法
 * 1.父类先操作后再去调用子类
 * 2.
 * 如果父类有自定义的构造方法
 * 子类在构造方法里就必须显示调用
 */
class Person1{
    String name;
    int age;
    public void walk()
    {

    }

}

class Person extends Person1
{
    int id;
    String school;
    public void show()
    {
        System.out.println(name);
    }
    @Override
    public String toString(){


        return "student"+"{name"+name+'\''+"age"+age+'\''+"id"+id+'\''+"school"+school;

    }
}
class TestEnd
{
//   Person1 XW=new Person1();
    public static void main(String[] args)
    {
        Person XW=new Person();
        System.out.println(XW.toString());
    }
}
/**
 * 多态
 * 1.同一种方法 多种实现=子类可以覆盖父类的方法
 * 2.运用多态时,引用类型可以是实际对象的父类
 *      类型的自动向上转换
 */


你可能感兴趣的:(Java基础知识)