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

Java入门第二季

IMOOC老齐 全栈工程师
难度入门
时长 4小时 0分
  • 抽象类

    1.语法定义

    抽象类前使用abstract关键字修饰,则该类为抽象类。

    2.应用场景:

    a.在某些情况下,某个父类只是知道其子类应该包含怎样的方法,但无法准确知道这些子类如何实现这些方法。

    b.从多个具有相同特征的类中抽象出一个抽象类,以这个抽象类作为子类的模板,从而避免了子类设计的随意性。

    3.作用:

    限制规定子类必须实现某些方法,但不关注实现细节。

    4.使用规则

    a.abstract定义抽象类;

    b.abstract定义抽象方法,只有声明,不需要实现;

    c.包含抽象方法的类是抽象类;

    d.抽象类中可以包含普通的方法,也可以没有抽象方法;

    e.抽象类不能直接创建,可以定义引用变量;


    eg.

    package com.imooc

    public abstract class Telphone{

    public abstract void call();//抽象方法没有方法体以分号结束;

    public abstract void message();//抽象方法没有方法体以分号结束;

    }

    package com.imooc

    public class CellPhone extends Telphone

    {

    @Override

    public voide call()

    {

    //TODO Auto-generated method stub

    System.out.println("通过键盘打电话");

    }

    @Override

    public voide message()

    {

    //TODO Auto-generated method stub

    System.out.println("通过键盘发短信");

    }

    }

    package com.imooc

    public class SmartPhone extends Telphone

    {

    @Override

    public voide call()

    {

    //TODO Auto-generated method stub

    System.out.println("通过语音打电话");

    }

    @Override

    public voide message()

    {

    //TODO Auto-generated method stub

    System.out.println("通过语音发短信");

    }

    }

    package com.imooc

    public class Intial

    {

    public static void main(String[] args)

    {

    Telphone tel1 = new CellPhone();

    tel1.call();

    tel1.message();

    Telphone tel2 = new SmartPhone();

    tel2.call();

    tel2.message();

    }

    }

    思考:

    现有Shape图形类,用Rectangle矩形和Circle圆形子类,求图形的周长和面积。


    查看全部
  • 静态初始化块只能给静态变量赋值且在类加载时,只会执行一次 执行顺序:静态初始化块、初始化块、构造方法
    查看全部
  • 静态方法可以直接调用静态成员和静态方法,非静态成员或方法必须通过对象来调用 非静态方法可以直接调用静态的、非静态的变量和方法
    查看全部
  • 一般成员变量只被每个对象独立拥有 静态成员 类成员属于所有类,会被每个类共享,可以直接通过类名调用
    查看全部
  • 一般的成员变量只在每个 静态成员 类成员
    查看全部
  • 构造方法 用来创建对象 给成员变量赋值 方法名和类名相同,没有返回值 构造方法同样具有方法的重载特性
    查看全部
  • 引用类型转换

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

    2.向下类型转换(强制类型转换),是大类型到小类型(向下有风险)

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

    eg. Dog dog = new Dog();

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

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

    Cat cat = (Cat)animal; //1.编译时Cat类型 2.运行时Dog类型(上一句已经将animal强制转换为Dog)

    为了避免出现以上错误,所以应做如下修改:

    Dog dog = new Dog();

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

    if(animal instanceof Dog)

    {

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

    }

    else

    {

    system.out.pringln("无法进行类型转换,无法转换为Dog类型");

    }

    if(animal instanceof Cat)

    {

    Cat cat = (Cat)animal; 

    }

    else

    {

    system.out.pringln("无法进行类型转换,无法转换为Cat类型");

    }


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

    import java.util.Scanner;

    public class DaDa {


    public static void main(String[] args) {

    Scanner scan = new Scanner(System.in);

    String[]arr = {"1 奥迪A4 4 500"

    ,"2     马自达6 4 400",

    "3 皮卡雪6 4 2 450",

    "4 金龙 20 800",

    "5      松花江 4 400",

    "6      依维柯 20 1000"};

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

    int num;//定义用户输入的值

    do {

    System.out.println("***您确定要租车吗***");

    System.out.println("是(请输入1)"+"\t"+"否(请输入2)");

    num = scan.nextInt();

    }while(num!=1&&num!=2);

    if(num==1) {

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

    System.out.println("序号 车名 载客数(人) 载货量(吨) 日租金(元/天)");

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

    System.out.println(arr[i]);//输出arr数组 

    }

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

    int sum=scan.nextInt();//接收用户输入的租车数量

    int[]temp=new int[sum];//定义整形数组temp保存车的序号

    String[]arr1 = {"奥迪A4","马自达6","皮卡雪6","金龙","松花江","依维柯"};//定义车数组arr1,保存车的名字

    for(int i=0;i<sum;i++) {//

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

    int cont = scan.nextInt();//接收用户输入车的序号

    temp[i]=cont;//给temp数组的每个元素赋值

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

    int day = scan.nextInt();//接收用户输入的天数

    System.out.println("您的账单:");

    System.out.println("已选载人车:");

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

    if(temp[i]==1||temp[i]==2||temp[i]==3||temp[i]==4) {//temp数组里1-4是可以载人的

    System.out.println(arr1[temp[i]-1]);//输出载人车的类型

    }

    }

    System.out.println("");

    System.out.println("已选载货车:");

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

    if(temp[i]==3||temp[i]==5||temp[i]==6) {//temp数组里的3,5-6是载货的

    System.out.println(arr1[temp[i]-1]);//输出载货的车的名字

    }

    }

    int people =0;int weight=0;int price =0;//定义载客量,定义载货量,定义一天的总价钱

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

    if(temp[i]==1) {//多重if...else结构给变量赋值

    people+=4;price+=500;

    }else if(temp[i]==2) {

    price+=400;

    }else if(temp[i]==4) {

    people+=20;

    price+=450;

    }else if(temp[i]==3) {

    people+=4;

    weight+=2;

    price+=800;

    }else if(temp[i]==5) {

    weight+=4;

    price+=400;

    }else if(temp[i]==6) {

    weight+=20;

    price+=1000;

    }

    }

    System.out.println("");

    System.out.println("共载客:"+people+"人");

    System.out.println("共载货:"+weight+"吨");

    System.out.println("租车总价格:"+price*day);

    System.out.println("");

    System.out.println("****感谢您的惠顾,欢迎下次光临****");

    }else if(num==2) {

    System.out.println("慢走不送");

    }

    }


    查看全部
    2 采集 收起 来源:综合练习

    2018-05-09

  • 静态方法:

    1、调用静态方法:

    可直接调用同类静态方法;调用非同类静态方法則需要通过类名或者创建类的对象进行调用?

    2、调用普通成员方法:

    只能通过创建类的对象进行调用;

    3、静态变量:

    同类直接调用,不同类通过类名或者创建类的对象进行调用;

    4、普通成员变量:

    通过创建类的对象进行非静态变量的调用;



    查看全部
  • 在普通方法中可直接访问同类中静态变量和非静态变量;

    在静态方法中调用非同类的静态变量需通过类名或者通过创建类的对象进行访问;


    查看全部
  • super 代表父类对象 

    调用父类属性 super.age();

    调用父类方法 super.eat;


    查看全部
  • 不允许改变的量是常量

    查看全部
  • final 修饰类的时候 类不可被继承 

    final 修饰方法的时候 方法不可被覆盖和重写 

    final 修饰变量的时候 变量不可更改 

    查看全部
  • aaa

    查看全部
  • aaa

    查看全部

举报

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

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