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

Java入门第二季

IMOOC老齐 全栈工程师
难度入门
时长 4小时 0分
  • 方法内部类就是内部类定义在外部类的方法中,方法内部类只在该方法的内部可见,即只在该方法内可以使用。

    一定要注意哦:由于方法内部类不能在外部类的方法以外的地方使用,因此方法内部类不能使用访问控制符和 static 修饰符。

    查看全部
  • 程序运行时静态初始化块最先被执行,然后执行普通初始化块,最后才执行构造方法。由于静态初始化块只在类加载时执行一次,所以当再次创建对象 hello2 时并未执行静态初始化块。

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

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

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

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

    运行结果 : 

    查看全部
  • 从上面的代码中我们可以看到,成员内部类的使用方法

    1、 Inner 类定义在 Outer 类的内部,相当于 Outer 类的一个成员变量的位置,Inner 类可以使用任意访问控制符,如 public 、 protected 、 private 等

    2、 Inner 类中定义的 test() 方法可以直接访问 Outer 类中的数据,而不受访问控制符的影响,如直接访问 Outer 类中的私有属性a

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

    4、 编译上面的程序后,会发现产生了两个 .class 文件

    其中,第二个是外部类的 .class 文件,第一个是内部类的 .class 文件,即成员内部类的 .class 文件总是这样:外部类名$内部类名.class

    另外,友情提示哦:

    1、 外部类是不能直接使用内部类的成员和方法滴

    可先创建内部类的对象,然后通过内部类的对象来访问其成员变量和方法。

    2、 如果外部类和内部类具有相同的成员变量或方法,内部类默认访问自己的成员变量或方法,如果要访问外部类的成员变量,可以使用 this 关键字。如:

    运行结果:

    查看全部
  • final修饰类,放在修饰符前
    查看全部
  •     //创建一个dog类对象:

    Dog dog = new Dog();

        //将父类Animal的对象转换为子类Dog类的对象

    Animal animal = dog;    //向上类型转换 自动类型转换

    Dog dog2 = (Dog)animal;    //向下类型转换 强制类型转换

    Cat cat = (Cat)animal;    //1、编译时 Cat类型;2、运行时 Dog类型,因此会报错

    查看全部
  • 引用类型转换:

    1、向上类型转换(隐式/自动类型转换),是小类型到大类型的转换;

    2、向下类型转换(强制类型转换),是大类型到小类型的转换;

    3、instanceof运算符,来解决引用对象的类型,避免类型转换的安全性问题。

    查看全部
  • 类 对象
    查看全部
    0 采集 收起 来源:练习题

    2018-09-11

  • 1 静态方法中可以直接调用同类中的静态成员,但不能直接调用非静态成员

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

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

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

    查看全部
  • 需要特别注意:静态初始化块只在类加载时执行,且只会执行一次,同时静态初始化块只能给静态变量赋值,不能初始化普通的成员变量

    我们来看一段代码:

    运行结果:

    通过输出结果,我们可以看到,程序运行时静态初始化块最先被执行,然后执行普通初始化块,最后才执行构造方法。由于静态初始化块只在类加载时执行一次,所以当再次创建对象 hello2 时并未执行静态初始化块。

    查看全部
  • 需要注意:

    1、 静态方法中可以直接调用同类中的静态成员,但不能直接调用非静态成员。如:

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

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

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

    查看全部
  • Java 中被 static 修饰的成员称为静态成员或类成员。它属于整个类所有,而不是某个对象所有,即被类的所有对象所共享。静态成员可以使用类名直接访问,也可以使用对象名进行访问。当然,鉴于他作用的特殊性更推荐用类名访问~~

    使用 static 可以修饰变量、方法和代码块。

    本小节,我们先认识一下静态变量。

    例如,我们在类中定义了一个 静态变量 hobby ,操作代码如下所示:

    运行结果:

    查看全部
  • 类的定义:类是模子,确定对象将会拥有的特征(属性)和行为(方法)

    类的特点:1.类是对象的类型

                     2.具有相同属性和方法的一组对象的集合

    对象的属性:对象具有的各种特征

                        每个对象的每个属性都拥有特定值

    对象的方法:对象执行的操作

    https://img1.sycdn.imooc.com//5b977c68000149c206040183.jpg

    类和对象的关系:类是抽象的概念,仅仅是模板,比如说:“手机”

                              对象是一个你能够看得到、摸得着的具体实体,例如                              iPhone5

    查看全部
  • private:本类

    默认:本类 本包 

    protected:本类 本包  子类

    public: 本类 本包  子类 其他

    查看全部
  • import java.util.Scanner;


    public class Initil {

    public static void main(String[] args) {

    // TODO Auto-generated method stub

    Vehicle[] vehicles={new Car("奥迪A4",4,0,500),new Car("马自达6",4,0,400),new Truck("皮卡雪6",4,2,450),new Car("金龙",20,0,800),

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

    System.out.println("欢迎来到答答租车系统!");

    System.out.println("是否进行租车  (1 是  2 不是)");

    Scanner in =new Scanner(System.in);

    int a=in.nextInt();

    if(a==1){

    System.out.println("您可租车的类型和价目表:");

    System.out.println("序号\t汽车名称\t租金\t  载人\t载货");

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

    System.out.println((i+1)+"\t"+vehicles[i]);

    }

    System.out.println("请输入您要租汽车的数量:");

    int num=in.nextInt();

    Vehicle[] chooseCar=new Vehicle[num];

    int serial;

    for(int i=0;num>0;num--,i++) {

    System.out.println("请输入第"+(i+1)+"辆车的序号:");

    serial=in.nextInt();

    chooseCar[i]=vehicles[serial-1];

    }

    System.out.println("根据您的输入,您想要租的车为:");

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

    System.out.println((i+1)+"\t"+chooseCar[i]);

    }

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

    int days=in.nextInt();

    System.out.println("可载人的有:");

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

    if(chooseCar[i].getLoadperson()>0){

    System.out.println(chooseCar[i].name);

    }

    }

    System.out.println("可载货的有:");

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

    if(chooseCar[i].getLoadthings()>0){

    System.out.println(chooseCar[i].name);

    }

    }

    int totalCost=0;

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

    totalCost+=chooseCar[i].getRent();

    }

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

    }

    in.close();

    }

    }


    public class Vehicle {

    public String name;

    public int loadperson;

    public int loadthings;

    public int rent;

    public String getName() {

    return name;

    }

    public void setName(String name) {

    this.name = name;

    }

    public int getLoadperson() {

    return loadperson;

    }

    public void setLoadperson(int loadperson) {

    this.loadperson = loadperson;

    }

    public int getLoadthings() {

    return loadthings;

    }

    public void setLoadthings(int loadthings) {

    this.loadthings = loadthings;

    }

    public int getRent() {

    return rent;

    }

    public void setRent(int rent) {

    this.rent = rent;

    }

    }


    public class Car extends Vehicle {

    public Car(String name,int loadperson,int loadthings,int rent){

    this.name=name;

    this.loadperson=loadperson;

    this.loadthings=loadthings;

    this.rent=rent;

    }


    @Override

    public String toString() {

    return this.getName()+"\t"+this.getRent()+"元/天    载人:"+this.getLoadperson()+"\t载货:"+this.getLoadthings()+"t";

    }

    }


    查看全部

举报

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

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