Java初学者笔记二:关于类的常见知识点汇总
一、Java的类:
Java的类是Java的基本概念了,基本的定义语法我就不提了,自己也不会忘了的,下面分成几个模块介绍:
1、Java的类定义时候的修饰符
2、Java的类的继承与派生
二、Java类定义的时候的修饰符:
说白了其实基本上就是变量的一些修饰符,因为java没有类外的变量或者方法可以用
1、public、protected和private
/*
第一类protected private public
public所有类可见
protected 包内的所有类和任何位置的子类可见
private 只在本类内可见
以上均可以修饰属性、方法 ,public可以修饰类,但是一个java文件只能有一个public类
*/
import java.io.*; class person{
public String pName;
private String pId;
enum Gender {Male,Female};
protected Gender pGender;
protected int pAge; person(String name,String id,int gender,int age) throws Exception{
this.pName = name;
this.pId = id;
if(gender == 0) {
this.pGender = Gender.Male;
}
else if (gender == 1) {
this.pGender = Gender.Female;
}
else {
throw new Exception("Gender Error!");
}
this.pAge = age;
} protected String getId() {
return this.pId;
} public void setName(String name) {
this.pName = name;
} private void sick() {
System.out.println("sick");
}
}
2、static静态变量(属性)与静态函数(方法)
静态指不依赖任何实例的变量或者方法,属于类的全体实例共享的,所以也不是独立的。如果有protected修饰就有点类似python里面的类变量,用public修饰就成了全局变量了,使用private修饰就成了带_ _的类变量了(但是其外部访问永远无法做到)。静态变量可以被静态与非静态方法调用。但是静态方法只能调用类中静态变量和自己参数中的变量。
public static int a = 1;
private static int b = 2;
protected static int c = 3;
public static void run(){}
private static void run(){}
protected static void run(){}
3、final
final是只能被赋值一次的变量,只能被继承不能被重载的方法,和不能被继承的类(所有成员方法都是final方法)
public final a = 1;//后面再也不能给a赋值了
public final void run(){}//子类可以继承但不能重载run方法
final class A{}//不能被继承的类,所有成员方法都是final方法
三、java的继承与派生
1、单继承
import java.io.*;
class person{
public String pName;
private String pId;
enum Gender {Male,Female};
protected Gender pGender;
protected int pAge;
person(String name,String id,int gender,int age) throws Exception{
this.pName = name;
this.pId = id;
if(gender == 0) {
this.pGender = Gender.Male;
}
else if (gender == 1) {
this.pGender = Gender.Female;
}
else {
throw new Exception("Gender Error!");
}
this.pAge = age;
}
protected String getId() {
return this.pId;
}
public void setName(String name) {
this.pName = name;
}
private void sick() {
System.out.println("sick");
}
}
class student extends person{
private int sScore;
public String sSchool;
public int sLevel;
student(String name,String pid,int gender,int age,int score,String school,int level) throws Exception{
super(name,pid,gender,age);
this.sScore = score;
this.sLevel = level;
this.sSchool = school;
}
public void showinfo() {
System.out.println(this.pName);
System.out.println(this.getId());
System.out.println(this.pGender);
System.out.println(this.pAge);
System.out.println(this.sSchool);
System.out.println(this.sLevel);
System.out.println(this.sScore);
}
}
(1)知识点1:重载构造方法:
自己的变量自己管,父类的变量super()传。子类的构造函数参数要包含父类构造函数中的参数,并把父类的那部分参数传入super()进行调用。
(2)知识点2:
重载方法后优先使用重载的方法。
2、接口与抽象类:
(1)接口是一种特殊类:
/*@Override是重载父类或者接口的修饰符,编译器识别到这个之后,可以在编译时帮助检查父类是否由此方法*/
interface jiekou{
//只能有静态全局常量public static final xxxx和抽象方法
}
/*
1、接口必须有子类
2、子类可以继承多个接口
3、接口中的子类如果不是抽象类,必须重写接口的所有方法
4、接口本身可以继承多个接口extends,接口不能继承抽象类和普通类
5、接口可以实例化但是必须通过子类的实例的反转实现
*/
//X类继承A和B两个接口
X x = new X();//实例化子类对象
A a = x;//向上转型
B b = x;//向上转型
(2)抽象方法与抽象类:
(2.1)延伸接口中的抽象方法的抽象概念,此概念也可以到抽象类
abstract void func();
这就是一个方法的定义,只有函数的抽象概念没有实际的实现。必须要到子类中给与重载实现。
(2.2)抽象类:
/*
抽象类:
1、拥有抽象函数的类就叫抽象类,与接口不同可以有普通的成员变量和方法,但是至少有一个抽象方法。
2、继承抽象泪的子类如果不是抽象类那么必须重载实现父类的抽象方法。所以抽象方法必须public或者protected的。
3、抽象类不能创建实例。
4、抽象类可以继承抽象类。
*/
abstract class ClassName {
abstract void fun();//至少有一个抽像函数;
}
(3)总结一下多继承:
(3.1)前提:
#接口是一种特殊的抽象类(只有全局静态变量和抽象函数的抽象类)
#接口必须被继承才有用(不能直接实例化)
#接口中的方法都必须重载后才能使用
#抽象类可以继承抽象类(只能继承一个,可以继承接口,可以继承多个)
#接口中不能含有静态代码块以及静态方法,而抽象类可以有静态代码块和静态方法
#抽象类必须继承才能用(不能直接实例化)
(3.2)多继承
#普通类可以继承普通类和抽象类(但是一个只能继承一个),可以继承接口(多个)。
#抽象类可以继承抽象类(一个),可以继承接口(多个)。
#接口可以继承接口(多个)
interface A extends B,C{}
abstract class D{}
abstract class E extends D implements A,B,C{}
class F{}
class G extends F implements A,B,C{}
class H extends E {}
Java初学者笔记二:关于类的常见知识点汇总的更多相关文章
- Java初学者笔记
Java初学者笔记 前提:认识汉字,认识英语单词,会用键盘打字 ------------------------------- 端口是什么: --------面向对象编程(OOP) 接口”(Inter ...
- Java初学者笔记一:元类、获取类型、枚举
零.绪论: 2018年新年伊始,学习Java的冲动越来越强烈,毕竟以后无论是做安全开发还是安全研究都必不可少的掌握这门语言,所以在不断完善Python作为脚本语言的主语言的情况下觉得学习Java作为高 ...
- Java基础---IO(二)--File类、Properties类、打印流、序列流(合并流)
第一讲 File类 一.概述 1.File类:文件和目录路径名的抽象表现形式 2.特点: 1)用来将文件或文件夹封装成对象 2)方便于对文件与文件夹的属性信息进行操作 3)File类的实例是不 ...
- Java开发笔记(七十三)常见的程序异常
一个程序开发出来之后,无论是用户还是程序员,都希望它稳定地运行,然而程序毕竟是人写的,人无完人哪能不犯点错误呢?就算事先考虑得天衣无缝,揣着一笔巨款跑去岛国买了栋抗震性能良好的海边别墅,谁料人算不如天 ...
- java学习笔记7--抽象类与抽象方法
接着前面的学习: java学习笔记6--类的继承.Object类 java学习笔记5--类的方法 java学习笔记4--类与对象的基本概念(2) java学习笔记3--类与对象的基本概念(1) jav ...
- Java学习笔记二十一:Java面向对象的三大特性之继承
Java面向对象的三大特性之继承 一:继承的概念: 继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类. 继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方 ...
- Java学习笔记二--API课堂记录
JavaSE课堂记录(二) 第一节课 方法的重载:方法名相同,参数列表不同 方法的重写:方法名,参数列表相同 两同:方法名相同,参数列表相同 两小:访问权限小与等于父类,返回值类型小于等于父类(返回值 ...
- java新手笔记27 监听器类
1.外部类监听 package com.yfs.javase; import java.awt.Button; import java.awt.FlowLayout; import java.awt. ...
- 【原】Java学习笔记031 - 常用类
package cn.temptation; public class Sample01 { public static void main(String[] args) { /* * 类 Math: ...
随机推荐
- Win10系统设置专用网络和公用网络
打开设置界面或者按Win+I组合键打开设置界面,打开后点击“网络和Internet”; 在网络和Internet界面,点击左侧“拔号”(有些是以太网),在右侧窗口点击“宽带连接”(大家基本都是以太网连 ...
- /etc/fstab下的挂载类型defaults默认参数
[root@ob2 data]# cat /etc/fstab -98c0-59dbbcf8b040 / ext4 defaults UUID=e4ab7a0c-500f--bcd2-a77be0ce ...
- 常用的经典jquery代码[转]
0. 如何创建嵌套的过滤器: //允许你减少集合中的匹配元素的过滤器, //只剩下那些与给定的选择器匹配的部分.在这种情况下, //查询删除了任何没(:not)有(:has) //包含class为“s ...
- 很有必要了解的HTML嵌套规则
最近在重新学习HTML的知识,算是对HTML的一个重新认识吧!别小看了这东西,一切的网页可都是以它为基础的!下面就详细归纳一下HTML标签的嵌套规则吧,希望对大家有所帮助. XHTML的标签有许多:d ...
- 关于Cocos2d-x中字体的使用
1.如果使用的是系统自带的 static Label* createWithSystemFont ( const std::string & text, const std::s ...
- selenium测试(Java)--浏览器控制(四)
1. 控制浏览器窗口大小 1 package com.test.window; 2 3 import org.openqa.selenium.Dimension; 4 import org.openq ...
- 【F12】网络面板
使用网络面板了解请求和下载的资源文件并优化网页加载性能 (1)网络面板基础 测量资源加载时间 使用 Network 面板测量您的网站网络性能. Network 面板记录页面上每个网络操作的相关信息,包 ...
- 回调方法介绍之中国好室友篇(Java示例)
前言 在Java社区的各种开源工具中,回调方法的使用俯拾即是.所以熟悉回调方法无疑能加速自己对开源轮子的掌握.网上搜了一些文章,奈何对回调方法的介绍大多只停留在什么是回调方法的程度上.本篇文章尝试从回 ...
- Python调用打印机参考例子
参考资料: http://blog.csdn.net/jdh99/article/details/42585987 http://www.oschina.net/question/1438043_23 ...
- 【Java面试题】14 super.getClass()方法调用
下面程序的输出结果是多少? import java.util.Date; public class Test extends Date{ public static void main(String[ ...