为了账号安全,请及时绑定邮箱和手机立即绑定
慕课网数字资源数据库体验端
Java入门第二季_学习笔记_慕课网
为了账号安全,请及时绑定邮箱和手机立即绑定

Java入门第二季

IMOOC老齐 全栈工程师
难度入门
时长 4小时 0分
  • 虽然会做 但看不懂···

    查看全部
  • 1、 静态方法中可以直接调用同类中的静态成员,但不能直接调用非静态成员。

    如果希望在静态方法中调用非静态变量,可以通过创建类的对象,然后通过对象来访问非静态变量。

    2、 在普通成员方法中,则可以直接访问同类的非静态变量和静态变量

    3、 静态方法中不能直接调用非静态方法,需要通过对象来访问非静态方法。

    查看全部
  • 静态方法是属于类的,内存必须为它分配内存空间,这个空间一直由静态方法占用,内存管理器不会由于静态方法没有被调用而将静态方法的存储空间收回,这样如果将所有的方法都声明为静态方法,就会占用大量的内存空间,最后是系统变慢。而普通的成员方法是由对象调用的,内存并不会一直为起分配内存,只有调用的时候才为其分配存储空间,而当其没有被调用时,存储空间就会被内存管理其收回,释放没有用的空间,提高的系统的运行速率!

    查看全部
  • 静态内部类是 static 修饰的内部类,这种内部类的特点是:

    1、 静态内部类不能直接访问外部类的非静态成员,但可以通过 new 外部类().成员 的方式访问 

    2、 如果外部类的静态成员与内部类的成员名称相同,可通过“类名.静态成员”访问外部类的静态成员;如果外部类的静态成员与内部类的成员名称不相同,则可通过“成员名”直接调用外部类的静态成员

    3、 创建静态内部类的对象时,不需要外部类的对象,可以直接创建 内部类 对象名= new 内部类();

    查看全部
  • 定义了成员内部类后,必须使用外部类对象来创建内部类对象,而不能直接去 new 一个内部类对象,即:内部类 对象名 = 外部类对象.new 内部类( );

    查看全部
  • https://img1.sycdn.imooc.com//5afa2cd50001d06407280394.jpg

    查看全部
  • 成员内部类的使用方法: 1、 Inner 类定义在 Outer 类的内部,相当于 Outer 类的一个成员变量的位置,Inner 类可以使用任意访问控制符,如 public 、 protected 、 private 等 2、 Inner 类中定义的 test() 方法可以直接访问 Outer 类中的数据,而不受访问控制符的影响,如直接访问 Outer 类中的私有属性a 3、 定义了成员内部类后,必须使用外部类对象来创建内部类对象,而不能直接去 new 一个内部类对象,即:内部类 对象名 = 外部类对象.new 内部类( );
    查看全部
  • 静态内部类是 static 修饰的内部类,这种内部类的特点是: 1、 静态内部类不能直接访问外部类的非静态成员,但可以通过 new 外部类().成员 的方式访问 2、 如果外部类的静态成员与内部类的成员名称相同,可通过“类名.静态成员”访问外部类的静态成员;如果外部类的静态成员与内部类的成员名称不相同,则可通过“成员名”直接调用外部类的静态成员 3、 创建静态内部类的对象时,不需要外部类的对象,可以直接创建 内部类 对象名= new 内部类();
    查看全部
  • package DadaCar;


    public class Car {


    public String name;

    public int price;

    public int capacityP;

    public int capacityG;

    Car(String name,int price,int capacityP,int capacityG){

    this.name=name;

    this.price=price;

    this.capacityP=capacityP;

    this.capacityG=capacityG;

    }

    public void show() {

    }

    }

    //

    package DadaCar;


    public class Bus extends Car {



    Bus(String name, int price, int capacityP, int capacityG) {

    super(name, price, capacityP, capacityG);

    // TODO 自动生成的构造函数存根

    }


    public void show() {

    System.out.println(name+"  "+price+"元/天  载人:"+capacityP+"人");

    }

    }

    //

    package DadaCar;


    public class Truck extends Car {


    Truck(String name, int price, int capacityP, int capacityG) {

    super(name, price, capacityP, capacityG);

    // TODO 自动生成的构造函数存根

    }

    public void show() {

    System.out.println(name+"  "+price+"元/天  载货:"+capacityG+"吨");

    }


    }

    //


    package DadaCar;


    public class Pika extends Car {


    Pika(String name, int price, int capacityP, int capacityG) {

    super(name, price, capacityP, capacityG);

    // TODO 自动生成的构造函数存根

    }


    public void show() {

    System.out.println(name+"  "+price+"元/天  载人:"+capacityP+"人;载货:"+capacityG+"吨");

    }


    }

    //


    package DadaCar;


    import java.util.Scanner;


    public class Initial {


    public static void main(String[] args) {

    // TODO 自动生成的方法存根

    Car car[]= {new Bus("奥迪A4", 500, 4, 0),new Bus("马自达6", 400, 4, 0),

    new Pika("皮卡雪6",450,4,2),new Bus("金龙", 800, 20, 0),

    new Truck("松花江", 400, 0, 4),new Truck("依维柯", 1000, 0, 20)};

    System.out.println("欢迎使用嗒嗒租车系统");

    System.out.println("序号   车名   租金   容量");

    for(int i=0;i<car.length;i++) {

    System.out.print((i+1)+"    ");

    car[i].show();

    }

    System.out.println("您是否要租车?");

    Scanner in=new Scanner(System.in);

    String choose=in.next();

    if(choose.equals("n")||choose.equals("N")) {

    System.out.println("欢迎下次光临!");

    }

    else {

    System.out.println("请选择租车数量:");

    int num=in.nextInt();

    int book[]=new int[num];

    for(int i=0;i<book.length;i++) {

    System.out.println("请选择第"+(i+1)+"台车的编号:");

    book[i]=in.nextInt()-1;

    }

    System.out.println("请输入租车天数:");

    int days=in.nextInt();

    System.out.println("您预订的车:");

    System.out.println("序号   车名   租金   容量");

    int sum=0;

    for(int i=0;i<book.length;i++) {

    System.out.print((i+1)+"  ");

    car[book[i]].show();

    sum=sum+car[book[i]].price;

    }

    System.out.println("租车总价格为:"+sum*days);

    System.out.println("谢谢使用,欢迎下次光临!");

    }

    }


    }


    查看全部
  • 静态内部类是不用声明外部类来再声明内部类的

    另外如果外部类与内部类的成员名字相同,则直接外部类.成员名字

     静态内部类不能直接访问外部类的非静态成员,但可以通过 new 外部类().成员 的方式访问 

    若name是静态成员都是M和B的成员,number是M的成员,teacher是M的静态成员

    例如:M是外部类,B是M的内部类

    如果不是静态内部类:

    M m=new M();

    B b=m.new B();

    如果是静态内部类:

    B b=new B();

    内部类:name

    外部类:M.name

    外部类:nmber

    外部类:new M().teacher


    查看全部
  • 如何使用一个构造方法

    查看全部
  • 如果是方法内部类,则设M为外部类,A为外部类的方法,B为A的方法内部类

    则方法内部类不能用访问控制符和static符,而且不能在外部类的方法以为调用

    只能在方法内调用

    查看全部
  • 由于方法内部类不能在外部类的方法以外的地方使用,因此方法内部类不能使用访问控制符和 static 修饰符。

    查看全部
  • 把外部类成员name设置成static类型时,就可以直接使用HelloWorld.name引用外部类的name了,static变量可以直接用<类名.变量名>引用。

    查看全部
  • 强转 在类型前面加() 如 Dog dog2 = (Dog)animal; 

    为了程序的安全性 可以应用 instanceof 关键字

    instanceof 配合 if 关键字的使用 

    if(animal instanceof Dog){

    Dog dog2 =(Dog) animal;

    }else{

    system.out.println("无法进行强转 转换成Dog类型");

    }



    查看全部

举报

0/150
提交
取消
课程须知
本课程是Java开发的基础,需要大家:掌握 Java 基本语法的使用。如果您是新手,建议先移步 《Java入门第一季》https://www.imooc.com/learn/85
老师告诉你能学到什么?
• 掌握 Java 编程思路 • 熟练运用面向对象程序设计思想
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!