Java重要知识点整理与汇总 PART2

epeppanda
发布于 2021-2-6 09:16
浏览
0收藏

子类与继承


1.如果子类与父类在同一包中,子类则继承了父类中不是private的:成员变量、方法,继承的成员变量和方法的访问权限不变。如果子类与父类不在同一包中,则父类的private和友好访问权限的:成员变量、方法,不会被子类继承。

 

2.java中子类会不会继承父类的static变量和static方法:无论是static修饰的变量,还是static修饰的方法,我们都知道他们是属于类本身的,不是属于某一个对象的,当声明一个对象时,并不产生static变量和方法的拷贝。也就是说,用static修饰的变量和方法在类加载的时候,只分配一块存储空间,所有此类的对象都可以操控此块存储空间。注:这里要说明的是,当子类没有与之同名的static变量(或方法时),子类的对象也可以操控这块内存空间。但是子类并没有继承父类中static修饰的变量和方法。因为static修饰的变量和方法是属于父类本身的。

 

3.当用子类的构造方法创建一个子类的对象时,不仅子类中声明的成员变量被分配了内存,而且父类的成员变量也都分配了内存空间,但只将其中一部分,即子类继承的那部分成员变量,作为分配给子类对象的变量。也就是说,如果在同一包中,父类的private成员变量尽管分配了内存空间,也不作为子类对象的变量,同样,如果不在同一包中,那么子类也不继承父类的友好成员变量。但是不是可以说子类创建对象时似乎浪费了一些内存呢,因为当子类创建对象时,父类的成员变量也都分配了内存空间,但只将其中一部分作为分配给子类对象的变量。答案是否定的,因为子类中还有一部分方法是从父类继承的,这部分方法却可以操作这部分未继承的变量。

 

4.当用子类的构造方法创建一个子类对象时,子类的构造方法总时先调用父类的某个构造方法,也就是说,如果子类的构造方法没有明显地指名使用父类的哪个构造方法,子类就调用父类中不带参数的构造方法。由于子类不继承父类的构造方法,因此,子类在其构造方法中需使用super来调用父类的构造方法,而且super必须是子类构造方法的头一条语句,即如果在子类的构造方法中没有明显地写出super关键字来调用父类的某个构造方法,那么默认也有super();因此,在父类中定义多个构造方法时,应当包含一个不带参数的构造方方法,以防子类省略super时出现错误。

 

5.final关键字:

  • final类不能被继承
  • final方法不能被重写
  • final常量不能变值


6.java上转型对象的理解,性质,优点:

 

理解:
若A类是B类的父类,当用子类(B类)创建一个对象b,并把此对象的引用赋值给父类(A类)的对象a中时,称对象a是对象b的上转型对象。
例如: A a = new A(); a = new B();


性质:
●上转型对象可以访问子类继承的成员变量或成员方法也可以访问子类重写的成员方法,但不能操纵子类新增的成员变量或成员方法。
●可以将上转型对象强制转回为子类对象。Java重要知识点整理与汇总 PART2-鸿蒙开发者社区

 

优点:
方便面向接口的编程思想和面向抽象的编程思想,(上转型对象可理解为树的主干,其每个子类可理解为树枝)。


7.多态性:指父类的某个方法被其多个子类重写时,这多个子类可以按自己的需求,重写此方法产生各自的功能行为。

 

8.java抽象类的例子,性质,优点:

例如:

public abstract class A {
   abstract int add(int x,int y);
   int sub(int x,int y) { 
      return x-y;
   }
}

性质:
●抽象类的类名前加修饰符abstract,可以包含抽象方法(用abstract修饰,只有方法原型,没有方法的实现),也可以包含非抽象方法,可包含常规类能包含的任何成员;
●抽象类是没有具体实例对象的类,不能使用new方法进行实例化,只能用作超类,只有当子类实现了抽象超类中的所有抽象方法,子类才不是抽象类,才能产生实例,如果子类中仍有抽象方法未实现,则子类也只能是抽象类;
●只有抽象类才可以包含抽象方法。


抽象方法的优点:
1.隐藏具体细节信息,所有的子类使用的都是相同的方法原型,其中包含了调用该方法时需要了解的全部信息;
2.强迫子类完成指定的行为,规定所有子类的标准行为。


9.java接口的介绍,性质,例子,优点:

 

介绍:
●接口包括接口声明和接口体,接口体包括常量的定义(必有初值),方法的声明(无方法体)。
例如:

interface Shape2D {
	public static final double pi = 3.14;//public static final可省略
	public abstract double area();//public abstract可省略
}

 

性质:
●接口可理解为纯抽象类;
●接口没有构造方法;
●常量(final),方法(public abstract,注意实现类中方法的访问权限为public);
●类实现某一接口要实现此接口的所有方法;
●接口的拓展:接口可继承(extends)多个超接口。


优点:
●建立类和类之间的“协议”口将类根据其实现的功能分组用接口代表,而不必顾虑它所在的类继承层次;
这样可以最大限度地利用动态绑定,隐藏实现细节;
●实现多继承的思想


10.java接口回调及接口多个性质的例子:

interface Shape {
	public static final double pi = 3.14;//public static final可省略
	public abstract double area();//public abstract可省略
}
interface another{
	//只用来做多继承思想的说明
}
class Circle implements Shape,another{//为多继承思想的体现
	double radius;//新增变量
	public Circle(double r) {//新增方法
		radius = r;
	}
	public double area() {//实现接口的方法
		return (pi*radius*radius);
		//调用接口中的pi常量(可理解为继承过来的)
	}
}
public class Exampleke9 {
	public static void main(String[] args) {
		Circle cir = new Circle(2.0);
		System.out.println("Area of cir = "+cir.area());
		Shape shape;//声明接口变量
		shape = new Circle(2.0);//接口变量中存放对象的引用
		System.out.println("Area of cir = "+shape.area());
	//shape.area()为接口回调,若多个类implements一个接口,接口回调可以体现多态性
	}
}

 

11.abstract类与接口的比较:
abstract类除了提供重要的需要子类重写的abstract方法外,也提供了子类可以继承的变量和非abstract方法。

如果某个问题需要使用继承才能更好地解决,例如,子类除了需要重写父类的abstract方法外,还需要从父类继承一些变量或继承一些重要的非abstract方法,就可以考虑abstract类。

如果某个问题不需要继承,只是需要若干个类给出某些重要的abstract方法的实现细节,就可以考虑使用接口。

 

12.自定义异常类:
一个方法在声明时可以使用throws关键字声明要产生的若干个异常,并在该方法的方法体中具体给出产生异常的操作,即用相应的异常类创建对象,并用throw关键字抛出该异常对象,导致该方法结束执行,程序必须在try-catch块语句中调用可能发生异常的方法,try部分中发生异常时,try部分立刻结束执行,执行跳转到catch部分,其中catch的作用就是捕获throw关键字抛出的异常对象。

 

13.断言:
断言语句可以在某个错误发生时,要求程序必须立即停止执行。在调试代码阶段非常有用,当程序正式运行时,就可以关闭断言语句。使用assert关键字声明。

 

 

常用实用类


1.String类常用方法:

  • public int length()
  • public boolean equals(String s)
  • public boolean startsWith(String s) / endsWith(String s)
  • public int compareTo(String s)
  • public boolean contains(String s)
  • public int indexOf(String s [, int startpoint]) / lastIndexOf(String s)
  • public String substring(int startpoint [, endpoint])
  • public String trim()
  • public static String valueOf(其他类型 n)
  • public void getChars(int start, int end, char[] c, int offset)
  • public char[] toCharArray()
  • public byte[] getBytes([String charsetName])
  • public String replaceAll(String regex, String replacement)
  • public String[] split(String regex)

 

2.StringTokenizer类:是String对象的分析器,可以分解String对象的字符序列,StringTokenizer对象称为字符串分析器。

 

3.StringBuffer类:可变字符串对象。

4.正则表达式:

Java重要知识点整理与汇总 PART2-鸿蒙开发者社区

Java重要知识点整理与汇总 PART2-鸿蒙开发者社区

5.Date类、Calendar类与日期的格式化

 

6.Math类、BigInteger类和Random类

 

7.数字格式化:String.format()

 

8.Class类:该类的实例可以帮助程序创建其他类的实例,创建对象最常用的方式就是使用new运算符和类的构造方法,实际上也可以使用Class对象得到某个类的实例。
(1)public static Class forName(String className) throws ClassNot FoundException,该方法返回一个和参数className指定的类相关的Class对象,如果该类在某个包中,className必须带有包名。
(2)public Object newInstance() throws InstantiationException, IllegalAccessException,该方法使用Class对象调用newInstance()实例化一个className类的对象时,className类必须有无参数的构造方法。

 

9.Console类:在键盘上输入一行文本时,不让该文本回显,即不再命令行显示。

 

10.Pattern类与Matcher类

 

组件与事件处理


1.Java Swing概述:

容器类(Container)和组件类(Component)。javax.swing包中JComponent类是java.awt包中Container类的一个直接子类,是java.awt包中Component类的一个间接子类。


Component类的子类或间接子类创建的对象称为一个组件。
Container的子类或间接子类创建的对象称为一个容器。
可以向容器中添加组件,Continer类提供了一个public方法add()。
容器调用removeAll()可以移除容器中所有组件,remove(Component c)可以移除某个组件。


容器本身也是一个组件,可以把一个容器添加到另一个容器中。
每当容器添加新的组件或移除组件时,应当让容器调用validate()方法,以保证容器中的组件能正确显示出来。
一个基于GUI的应用程序应当提供一个能和操作系统直接交互的容器,该容器可以直接被显示、绘制在操作系统所控制的平台上,例如显示器上,这样的容器被称作GUI设计中的底层容器,Java提供的JFrame类的实例就是一个底层容器,即通常所称的窗口。


如果应用程序需要一个和用户交互的按钮,那么该按钮必须出现在底层容器中,否则用户无法看见,更无法操作。
JFrame类时Container类的间接子类,当需要一个窗口时,可使用JFrame或其子类创建一个对象,窗口也是一个容器,可以添加组件,窗口默认被系统添加到显示器屏幕上,因此不允许将一个窗口添加到另一个容器中。
创建的普通容器习惯性地称为中间容器,中间容器需要添加到底层容器中才能发挥作用。


2.常用容器:

  • JPanel面板
  • JTabbedPane选项卡窗格
  • JScrollPane滚动窗格
  • JSplitPane拆分窗格
  • JLayeredPane分层窗格


3.常用布局:

  • FlowLayout布局
  • BorderLayout布局
  • CardLayout布局
  • GirdLayout布局
  • null布局
  • BoxLayout布局


4.常用组件:

  • JTextField(文本框)
  • JTextArea(文本区)
  • JButton(按钮)
  • JLabel(标签)
  • JCheckBox(复选框)
  • JRadioButton(单选按钮)
  • JComboBox(下拉列表)
  • JPasswordField(密码框)


附图Java重要知识点整理与汇总 PART2-鸿蒙开发者社区

5.事件:Java重要知识点整理与汇总 PART2-鸿蒙开发者社区

输入、输出流Java重要知识点整理与汇总 PART2-鸿蒙开发者社区

分类
已于2021-2-6 09:16:54修改
收藏
回复
举报
1条回复
按时间正序
/
按时间倒序
鸿蒙张荣超
鸿蒙张荣超

👍👍👍 期待Java For HarmonyOS的重要知识点整理与汇总 ^_^

回复
2021-2-10 12:58:55
回复
    相关推荐