目录

面向对象下

1.final关键字:

注:final修饰的成员变量,在未初始化时,JAVA虚拟机不会为final修饰的变量默认初始化,因此必须在声明时立即初始化或者在构造方法中进行初始化。

2.抽象类

3.static关键字

注:static只能修饰成员变量,在修饰局部变量时,会报错。

4.接口

注:当Child 继承Parent时,需要实现Parent接口中所有方法,任何实现继承接口的类,必须实现该接口继承的其他接口,除非类被声明为abstract。

5.接口与抽象类的区别

注:接口一般不会写常量,如果有,要赋初值,如下图片所示。

6.instanceof关键字

7.object类

判断两个对象是否相等,尽量使用equals()方法,而不是用==来判断是否对象相等,==也可能因为new新建的对象变化导致值相同,但报不同。

8.多态

多态存在的三个必要条件

类型转换

9.esclipe中的快捷键与食用方法


面向对象下

1.final关键字:

1.final修饰的类不能被继承,且final类中的所有成员方法都会被隐式地指定为final方法。

2.final修饰的方法不能被子类重写

3.final修饰的变量是常量,初始化后不能再修改

注:final修饰的成员变量,在未初始化时,JAVA虚拟机不会为final修饰的变量默认初始化,因此必须在声明时立即初始化或者在构造方法中进行初始化。

4.final与static的区别是啥(static关键字在第三项)

static作用于成员变量用来表示只保存一份副本,而final的作用是用来保证变量不可变

两次打印的j值都是一样的,而i的值却是不同的,因此final是永远不会改变的。

final关键字的好处

# final关键字提高了性能。JVM和Java应用都会缓存final变量。

# final变量可以安全的在多线程环境下进行共享,而不需要额外的同步开销。

# 使用final关键字,JVM会对方法、变量及类进行优化。

# final和abstract这两个关键字是反相关的,final类就不可能是abstract的

# 在匿名类中所有变量都必须是final变量

2.抽象类

1.用abstract修饰的方法,称为抽象方法,只有方法的声明,没有方法体;

用abstract修饰的类,称为抽象类,抽象类可以不包含任何抽象方法。

2.子类继承的父类为抽象类时,必须实现父类所有的抽象方法,否则子类必须声明为抽象类

abstract class A{//定义一个抽象类public void fun(){//普通方法System.out.println("存在方法体的方法");}public abstract void print();//抽象方法,没有方法体,有abstract关键字做修饰}

上面所说,就是一般的抽象类的说明,在写管理系统时经常要用到抽象类或者接口,先定义框架,然后在进行详细功能的实现

注:抽象类的使用原则如下:
(1)抽象方法必须为public或者protected(因为如果为private,则不能被子类继承,子类便无法实现该方法),缺省情况下默认为public;
(2)抽象类不能直接实例化,需要依靠子类采用向上转型的方式处理;
(3)抽象类必须有子类,使用extends继承,一个子类只能继承一个抽象类;

3.抽象类中有构造方法么?
由于抽象类里会存在一些属性,那么抽象类中一定存在构造方法,其存在目的是为了属性的初始化。
并且子类对象实例化的时候,依然满足先执行父类构造,再执行子类构造的顺序。
4.外部抽象类不允许使用static声明,而内部的抽象类运行使用static声明。(关于static的介绍就在第三条)

package com.azhe.www;static abstract class A{//在外部定义一个抽象类public abstract void print();}class B extends A{public void print(){System.out.println("**********");}
}
public class TestDemo {public static void main(String[] args) {A a = new B();//向上转型a.print();}}

改程序无法正常运行,会报错,说明外部类不能用static声明

package com.azhe.www;abstract class A{//定义一个抽象类static abstract class B{//static定义的内部类属于外部类public abstract void print();}}class C extends A.B{public void print(){System.out.println("正确输出");}
}
public class TestDemo {public static void main(String[] args) {A.B ab = new C();//向上转型ab.print();}}

使用static声明的内部抽象类相当于一个外部抽象类,继承的时候使用“外部类.内部类”的形式表示类名称

结果程序正常运行,由此说明,内部的抽象类运行使用static声明,此时内部类相当于是一个外部类。

3.static关键字

1.静态变量

使用static修饰的变量将被类的所有对象共享,若未用static修饰属于具体对象独有

class Person{int number;
public Persion()
{
number++;
}
}
public class TestNumber{
public static void main(string[]args){
Persion p1=new Persion();
Persion p2=new Persion();
System.out.println(p2.number);}}

如上述代码,输出结果为1,因为p1与p2是分别对number加一。

class Person{
static int number;
public Persion()
{
number++;
}
}
public class TestNumber{
public static void main(string[]args){
Persion p1=new Persion();
Persion p2=new Persion();
System.out.println(p2.number);}}

number加上static修饰后,输出结果为2,这是因为p1和p2同时对同一个number操作。

注:static只能修饰成员变量,在修饰局部变量时,会报错。

2.静态方法

静态方法只能访问静态方法或静态变量。

4.接口

1.JAVA中提供关键字interface来声明接口

提供关键字implements来实现接口

2.接口中定义的变量和方法都包含默认的修饰符,如下面代码所示:

interface Parent{
String name=null;//等价于 public static final String name;
void say();//等价于 public abstract void say();}

3.接口的继承支持多继承;

注:当Child 继承Parent时,需要实现Parent接口中所有方法,任何实现继承接口的类,必须实现该接口继承的其他接口,除非类被声明为abstract。

下面是接口的声明及实现测试样例

package com.wz.interfacedemo;interface A{//定义一个接口Apublic static final String MSG = "hello";//全局常量public abstract void print();//抽象方法
}interface B{//定义一个接口Bpublic abstract void get();
}class X implements A,B{//X类实现了A和B两个接口@Overridepublic void print() {System.out.println("接口A的抽象方法print()");}@Overridepublic void get() {System.out.println("接口B的抽象方法get()");}}public class TestDemo {public static void main(String[] args){X x = new X();//实例化子类对象A a = x;//向上转型B b = x;//向上转型a.print();b.get();}}

5.接口与抽象类的区别

注:接口一般不会写常量,如果有,要赋初值,如下图片所示。

字符串name若未赋初值,会报错。

6.instanceof关键字

JAVA提供关键字instanceof关键字来判断一个对象是否是一个类的(或接口)的实例,

表达式返回为boolean值,例如如下代码所示

public class COM {public static void main(String[] args) {B v = new B();A a = v;if(a instanceof B) {System.out.println("start1");  }}
}
interface A{
}
class B implements A{}
}

7.object类

1.在Java语言里,Object类是所有类的父类
如果一个类没有指定父类,则它默认父类就是Object

2. toString()方法会默认返回一个描述该对象的字符串,由该对象的所属类名,@和对象的十六进制形式的内存地址组成,

也可自己重写toString方法来实现自己想要的功能,toString()是Object的一个方法,重写这个方法,可以在调试的时候快速显示对象的值。例如

package www.azhe.com;public class Student
{public String id;public String name;public boolean sex;@Overridepublic String toString(){String s = "学号: " + id + ", 姓名: " + name ;if ( sex ) {s = s + "(男)";}else{s = s + "(女)";}return s;}
}
Student stu = new Student();stu.id = "52581";stu.name = "azhe";stu.sex = true;       System.out.println("学生信息: " + stu);

如图所示,程序运行结果如图所示,重写了tostring函数后,当字符串与Student对象拼接时,等效于:
System.out.println("学生信息: " + stu.toString() );
而其中stu.toString() ,就是将stu对象转成字符串显示。

3.equals()方法

判断两个对象是否相等,尽量使用equals()方法,而不是用==来判断是否对象相等,==也可能因为new新建的对象变化导致值相同,但报不同。

因此在比较两个对象是否内容相同时,一般使用equals,在写管理系统时,经常会用到equals()方法来比较输入的内容与存在的内容是否相同,如下所示:

8.多态

多态是同一个行为具有多个不同表现形式或形态的能力。

多态就是同一个接口,使用不同的实例而执行不同操作。

多态性是对象多种表现形式的体现。

  • 多态存在的三个必要条件

  • 继承
  • 重写
  • 父类引用指向子类对象
  • 方式一:重写:
  • 这个内容已经在上一章节详细讲过,就不再阐述,详细可访问:Java 重写(Override)与重载(Overload)。
  • 方式二:接口
    生活中的接口最具代表性的就是插座,例如一个三接头的插头都能接在三孔插座中,因为这个是每个国家都有各自规定的接口规则,有可能到国外就不行,那是因为国外自己定义的接口类型。
    java中的接口类似于生活中的接口,就是一些方法特征的集合,但没有方法的实现。
  • 方式三:抽象类和抽象方法

类型转换

子类转化为父类,可能丢失自己本身的原来的一些方法!

  1. 父类引用指向子类对象

  2. 把子类转换为父类,向上转型;不用强制转换

  3. 想把父类转化为子类,向下转型;需要强制转换,强制转换可能会丢失一些方法,此时只能调用父类的方法,子类的方法无法调用


​
public class Protion{public static void main(String[] args) {//类型之间的转化:基本类型转换   高转低(强转),低转高不需要强转//父与子//高                    低Person obj = new Student();//student将这个对象转化为Student类型,就可以使用Student类型的方法了!Student obj1 = (Student) obj;obj1.print();((Student) obj).print();}
}

9.esclipe中的快捷键与食用方法

Alt+方向键

这也是个节省时间的法宝。这个组合将当前行的内容往上或下移动。在try/catch部分,这个快捷方式尤其好使

ctrl+m

大显示屏幕能够提高工作效率是大家都知道的,Ctrl+m是编辑器窗口最大化的快捷键。

ctrl+1

修改建议的快捷键

ctrl+T

查看一个类的继承关系树,是自顶向下的,再多按一次Ctrl+T, 会换成自底向上的显示结构。

提示:选中一个方法名,按Ctrl+T,可以查看到有这个同名方法的父类、子类、接口。

助记:"T"------->"Tree"----->"层次树"

Ctrl+O

查看一个类的纲要,列出其方法和成员变量。提示:再多按一次Ctrl+O,可以列出该类继承的方法和变量。

助记:"O"--->"Outline"--->"纲要"

ctrl+1Getter与Setter(写管理系统时实用!)

在Java里,类的属性一般设置为private。那么,外部还怎么访问属性的值呢?
Getter: 添加一个方法,用于读取该属性的值
Setter: 添加一个方法,用于设置该属性的值
方法的命名规则:

get + 属性名
set + 属性名
注意把属性名的首字母大写,如setNumber当写一个系统的时候,有时候也许你会需要些十七八个甚至更多的set或是get函数,注意,eclipse里可以自动添加 Getter/Setter!

如下图书管理系统所示,将书写大量set,get函数,可以使用快捷键来节省时间。

如下操作就可以创建set,get函数

JAVA小记3(第三周)相关推荐

  1. 2019-2020-3 《Java 程序设计》第三周知识总结

    2019-2020-3 <Java 程序设计>第三周知识总结 1.类的定义 语法格式如下(加[]表示可选项): [修饰符] class 类名 { 属性定义(声明) 方法定义(声明)} 2. ...

  2. 20165206 2017-2018-2 《Java程序设计》第三周学习总结

    20165206 2017-2018-2 <Java程序设计>第三周学习总结 教材学习内容总结 类:class是关键字,用来定义类. 类声明:例如class People. 对象的声明:类 ...

  3. 20155117 王震宇 2006-2007-2 《Java程序设计》第三周学习总结

    20155117 王震宇 2006-2007-2 <Java程序设计>第三周学习总结 教材学习内容总结 在JAVA程序编写中,常常要用到对象(Object),要产生对象首先要定义类(Cla ...

  4. 20155313 2016-2017-2 《Java程序设计》第三周学习总结

    20155313 2016-2017-2 <Java程序设计>第三周学习总结 教材学习内容总结 4.1 类与对象 4.1.1 定义类 书本中使用了设计衣服来定义类,一件衣服的设计Cloth ...

  5. 20175204 张湲祯 2018-2019-2《Java程序设计》第三周学习总结

    20175204 张湲祯 2018-2019-2<Java程序设计>第三周学习总结 教材学习内容总结 -第四章类与对象要点: -面向对象语言三个特性:封装性:继承:多态: -类:1.类是组 ...

  6. 《Java程序设计》第三周学习总结

    20145224-陈颢文 <Java程序设计>第三周学习总结 教材学习内容总结 一.定义类: ·类定义时使用class关键字,要对类中变量(值域成员/对象数据成员)行类型声明. class ...

  7. 20175227张雪莹 2018-2019-2 《Java程序设计》第三周学习总结

    20175227张雪莹 2018-2019-2 <Java程序设计>第三周学习总结 教材学习内容总结 (仅在此列举个性化学习总结) 一.编程语言的几个发展阶段. 1.面向机器语言:汇编语言 ...

  8. 20155305乔磊2016-2017-2《Java程序设计》第三周学习总结

    20155305乔磊 2016-2017-2 <Java程序设计>第三周学习总结 教材学习内容总结 对象(Object):存在的具体实体,具有明确的状态和行为 类(Class):具有相同属 ...

  9. 20155216 2016-2017-2 《Java程序设计》第三周学习总结

    教材学习内容总结 区分基本类型与类类型 类类型是自己定义产生的,基本类型是long,int,double等类型. 在类的定义过程中,可直接用class XXX {}对每个序定义的值域成员进行定义.这样 ...

  10. 201771010112罗松《面向对象程序设计(java)》第三周学习总结

    实验三  Java基本程序设计 201771010112  罗松 1.实验目的与要求 (1)进一步掌握Eclipse集成开发环境下java程序开发基本步骤: (2)熟悉PTA平台线上测试环境: (3) ...

最新文章

  1. 通俗理解卡尔曼滤波及其算法实现(实例解析)
  2. 有没有一只蜻蜓永远为你守候?
  3. cadence一些术语
  4. 潘越云《面朝海子》:诗里的人都会终成眷属
  5. JavaScript脚本放在哪里
  6. 一文详解超参数调优方法
  7. 基于FPGA的直流电机PWM控制+毕业论文
  8. 笔记 | 《机器学习》手推笔记更新集成学习(Boosting和随机森林)
  9. 网站测试自动化系统—在测试代码中硬编码测试数据
  10. jQuery基础知识--Form基础(续)
  11. 怎么压缩图片大小,压缩图片大小的小妙招
  12. Nods.js安装配置(windows)
  13. 入门版Linux上恢复误删除的文件
  14. 购买的随身WiFi扣卡日记-拆掉内置的esim流量卡
  15. python虚拟机原理_pvm虚拟机基本原理
  16. LTE-5G学习笔记33--通信行业考哪些证可以升职加薪
  17. linux怎样保存文件,linux不能保存文件如何解决
  18. 表关联之内关联用法案例详解
  19. 英语语法-- 第二讲、Be动词的形式和用法
  20. Type interface XXXMapper is not known to the MapperRegistry

热门文章

  1. 白盒测试——循环测试
  2. [windows Tools] windows程序打包工具-Advanced Installer 10.0
  3. 如何顺利接手一个中途的项目
  4. 动态规划-不相邻数字之和的最大值
  5. 倾斜摄影行业背景知识介绍
  6. Supervised Descent Method(人脸对齐之SDM论文解析)
  7. Boost出现error C2678
  8. AutoJs学习-实现自动刷快手极速版
  9. 你会给论文正确加引用吗?
  10. android 之输入法