Java 基础 面向对象修饰符和自定义数据类型

 不同修饰符使用细节

  常用来修饰类、方法、变量的修饰符如下:

    public 权限修饰符,公共访问, 类,方法,成员变量

    protected 权限修饰符,受保护访问, 方法,成员变量

    默认什么也不写 也是一种权限修饰符,默认访问, 类,方法,成员变量

    private 权限修饰符,私有访问, 方法,成员变量

    static 静态修饰符  方法,成员变量

    final 最终修饰符   类,方法,成员变量,局部变量

    abstract 抽象修饰符  类 ,方法

  注意:

    我们编写程序时,权限修饰符一般放于所有修饰符之前,不同的权限修饰符不能同时使用;

    同时,abstract与private不能同时使用;

扫描二维码关注公众号,回复: 5628417 查看本文章

    同时,abstract与static不能同时使用;

    同时,abstract与final不能同时使用。

  修饰类能够使用的修饰符:

  修饰类只能使用public、默认的、final、abstract关键字

       使用最多的是 public关键字

public class Demo {} //最常用的方式
class Demo2{}
public final class Demo3{}
public abstract class Demo4{}

  修饰成员变量能够使用的修饰符

  public : 公共的

       protected : 受保护的

          : 默认的

       private :私有的

       final : 最终的

       static : 静态的

       使用最多的是 private

public int count = 100;
    protected int count2 = 100;
    int count3 = 100;
    private int count4 = 100; //最常用的方式
    public final int count5 = 100;
    public static int count6 = 100;

  修饰构造方法能够使用的修饰符:

              public : 公共的

              protected : 受保护的

                       : 默认的

              private :私有的

              使用最多的是 public

public Demo(){} //最常用的方式
    protected Demo(){}
    Demo(){}
    private Demo(){} 

  修饰成员方法能够使用的修饰符:

              public : 公共的

              protected : 受保护的

                    : 默认的

              private :私有的

              final : 最终的

              static : 静态的

              abstract : 抽象的

              使用最多的是 public

public void method1(){}//最常用的方式
    protected void method2(){}
    void method3(){}
    private void method4(){}
    public final void method5(){}
    public static void method6(){}//最常用的方式
    public abstract void method7();//最常用的方式

自定义数据类型的使用

  定义长方形类,包含求周长与求面积的方法

  定义数学工具类,包含求两个数和的二倍与求两个数积的方法

    思考:这两个类的计算方法均需要两个数参与计算,请问两个数定义在成员位置还是形参位置更好,为什么?

    如果变量是该类的一部分时,定义成成员变量。

  如果变量不应该是类的一部分,而仅仅是功能当中需要参与计算的数,则定义为形参变量。

  实例:数学工具类

public class MathTool {
    //求两个数的和的二倍
    public double sum2times(int number,int number2) {
        return (number+number2)*2;
    }
    //求两个数的积
    public double area(int number,int number2) {
        return number*number2;
    }
}

  实例:长方形类

public class CFX {
    //因为长与宽,在现实事物中属于事物的一部分,所以定义成员变量
    private int chang;
    private int kuan;
    
    public CFX(int chang, int kuan) {
        this.chang = chang;
        this.kuan = kuan;
    }
    
    //求长与宽的周长
    public double zhouChang() {
        return (chang+kuan)*2;
    }
    //求长与宽的面积
    public double mianJi() {
        return chang*kuan;
    }
    public int getChang() {
        return chang;
    }
    public void setChang(int chang) {
        this.chang = chang;
    }
    public int getKuan() {
        return kuan;
    }
    public void setKuan(int kuan) {
        this.kuan = kuan;
    }
}

  类作为方法参数与返回值 

    类作为方法参数

    在编写程序中,会经常碰到调用的方法要接收的是一个类类型的情况,那么这时,要向方法中传入该类的对象。如下代码演示:

class Person{
    public void show(){
        System.out.println("show方法执行了");
    }
}
//测试类
public class Test {
    public static void main(String[] args) {
        //创建Person对象
        Person p = new Person();
        //调用method方法
        method(p);
    }
    
    //定义一个方法method,用来接收一个Person对象,在方法中调用Person对象的show方法
    public static void method(Person p){
        p.show();
    }
}

  类作为方法返回值

    写程序调用方法时,我们以后会经常碰到返回一个类类型的返回值,那么这时,该方法要返回一个该类的对象。如下代码演示:

class Person{
    public void show(){
        System.out.println("show方法执行了");
    }
}
//测试类
public class Test {
    public static void main(String[] args) {
        //调用method方法,获取返回的Person对象
        Person p = method();
        //调用p对象中的show方法
        p.show();
    }
    
    //定义一个方法method,用来获取一个Person对象,在方法中完成Person对象的创建
    public static Person method(){
        Person p = new Person();
        return p;
    }
}

  抽象类作为方法参数与返回值

  抽象类作为方法参数

  今后开发中,抽象类作为方法参数的情况也很多见。当遇到方法参数为抽象类类型时,要传入一个实现抽象类所有抽象方法的子类对象。如下代码演示:

//抽象类
abstract class Person{
    public abstract void show();
}
class Student extends Person{
    @Override
    public void show() {
        System.out.println("重写了show方法");
    }
}
//测试类
public class Test {
    public static void main(String[] args) {
        //通过多态的方式,创建一个Person类型的变量,而这个对象实际是Student
        Person p = new Student();
        //调用method方法
        method(p);
    }
    
    //定义一个方法method,用来接收一个Person类型对象,在方法中调用Person对象的show方法
    public static void method(Person p){//抽象类作为参数
        //通过p变量调用show方法,这时实际调用的是Student对象中的show方法
        p.show();    
}
}

  抽象类作为方法返回值

  抽象类作为方法返回值的情况,也是有的,这时需要返回一个实现抽象类所有抽象方法的子类对象。如下代码演示:

//抽象类
abstract class Person{
    public abstract void show();
}
class Student extends Person{
    @Override
    public void show() {
        System.out.println("重写了show方法");
    }
}
//测试类
public class Test {
    public static void main(String[] args) {
        //调用method方法,获取返回的Person对象
        Person p = method();
        //通过p变量调用show方法,这时实际调用的是Student对象中的show方法
        p.show();
    }
    
    //定义一个方法method,用来获取一个Person对象,在方法中完成Person对象的创建
    public static Person method(){
        Person p = new Student();
        return p;
    }
}

 接口作为方法参数与返回值

  接口作为方法参数

  接口作为方法参数的情况是很常见的,经常会碰到。当遇到方法参数为接口类型时,那么该方法要传入一个接口实现类对象。如下代码演示。

//接口
interface Smoke{
    public abstract void smoking();
}
class Student implements Smoke{
    @Override
    public void smoking() {
        System.out.println("课下吸口烟,赛过活神仙");
    }
}
//测试类
public class Test {
    public static void main(String[] args) {
        //通过多态的方式,创建一个Smoke类型的变量,而这个对象实际是Student
        Smoke s = new Student();
        //调用method方法
        method(s);
    }
    
    //定义一个方法method,用来接收一个Smoke类型对象,在方法中调用Smoke对象的show方法
    public static void method(Smoke sm){//接口作为参数
        //通过sm变量调用smoking方法,这时实际调用的是Student对象中的smoking方法
        sm.smoking();
    }
}

  接口作为方法返回值

  接口作为方法返回值的情况,在后面的学习中会碰到。当遇到方法返回值是接口类型时,那么该方法需要返回一个接口实现类对象。如下代码演示。

//接口
interface Smoke{
    public abstract void smoking();
}
class Student implements Smoke{
    @Override
    public void smoking() {
        System.out.println("课下吸口烟,赛过活神仙");
    }
}
//测试类
public class Test {
    public static void main(String[] args) {
        //调用method方法,获取返回的会吸烟的对象
        Smoke s = method();
        //通过s变量调用smoking方法,这时实际调用的是Student对象中的smoking方法
        s.smoking();
    }
    
    //定义一个方法method,用来获取一个具备吸烟功能的对象,并在方法中完成吸烟者的创建
    public static Smoke method(){
        Smoke sm = new Student();
        return sm;
    }
}

猜你喜欢

转载自www.cnblogs.com/tashanzhishi/p/10582040.html
今日推荐