一、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初学者笔记二:关于类的常见知识点汇总的更多相关文章

  1. Java初学者笔记

    Java初学者笔记 前提:认识汉字,认识英语单词,会用键盘打字 ------------------------------- 端口是什么: --------面向对象编程(OOP) 接口”(Inter ...

  2. Java初学者笔记一:元类、获取类型、枚举

    零.绪论: 2018年新年伊始,学习Java的冲动越来越强烈,毕竟以后无论是做安全开发还是安全研究都必不可少的掌握这门语言,所以在不断完善Python作为脚本语言的主语言的情况下觉得学习Java作为高 ...

  3. Java基础---IO(二)--File类、Properties类、打印流、序列流(合并流)

    第一讲     File类 一.概述 1.File类:文件和目录路径名的抽象表现形式 2.特点: 1)用来将文件或文件夹封装成对象 2)方便于对文件与文件夹的属性信息进行操作 3)File类的实例是不 ...

  4. Java开发笔记(七十三)常见的程序异常

    一个程序开发出来之后,无论是用户还是程序员,都希望它稳定地运行,然而程序毕竟是人写的,人无完人哪能不犯点错误呢?就算事先考虑得天衣无缝,揣着一笔巨款跑去岛国买了栋抗震性能良好的海边别墅,谁料人算不如天 ...

  5. java学习笔记7--抽象类与抽象方法

    接着前面的学习: java学习笔记6--类的继承.Object类 java学习笔记5--类的方法 java学习笔记4--类与对象的基本概念(2) java学习笔记3--类与对象的基本概念(1) jav ...

  6. Java学习笔记二十一:Java面向对象的三大特性之继承

    Java面向对象的三大特性之继承 一:继承的概念: 继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类. 继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方 ...

  7. Java学习笔记二--API课堂记录

    JavaSE课堂记录(二) 第一节课 方法的重载:方法名相同,参数列表不同 方法的重写:方法名,参数列表相同 两同:方法名相同,参数列表相同 两小:访问权限小与等于父类,返回值类型小于等于父类(返回值 ...

  8. java新手笔记27 监听器类

    1.外部类监听 package com.yfs.javase; import java.awt.Button; import java.awt.FlowLayout; import java.awt. ...

  9. 【原】Java学习笔记031 - 常用类

    package cn.temptation; public class Sample01 { public static void main(String[] args) { /* * 类 Math: ...

随机推荐

  1. hadoop中的Jobhistory历史服务器

    1.  启动脚本 mr-jobhistory-daemon.sh start historyserver 2. 配置说明 jobhistory用于查询每个job运行完以后的历史日志信息,是作为一台单独 ...

  2. poj3208 Apocalypse Someday 数位dp+二分 求第K(K <= 5*107)个有连续3个6的数。

    /** 题目:poj3208 Apocalypse Someday 链接:http://poj.org/problem?id=3208 题意:求第K(K <= 5*107)个有连续3个6的数. ...

  3. Latex的各种帽子

    \hat{A} \widehat{A} \tilde{A} \widetilde{A} \overline{A} \underline{A} \overbrace{A} \underbrace{A} ...

  4. python读写word文档

    读: from docx import Document dir_docx = 'F:\Eclipse\workspace\Spider\cnblogs_doc\mytest - 副本.docx' d ...

  5. sdi 采集卡---环视频拼接直播方案

    http://www.upano.cn/# 360度无死角直播1080p 30fps http://search.jd.com/Search?keyword=sdi%E9%87%87%E9%9B%86 ...

  6. node.js执行shell命令

    nodejs功能强大且多样,不只是可以实现 服务器端 与 客户端 的实时通讯,另一个功能是用来执行shell命令 首先,引入子进程模块 var process = require('child_pro ...

  7. Android多线程任务的优化1:AsyncTask的缺陷 (转至 http://www.linuxidc.com/Linux/2011-09/43150.htm)

    导语:在开发Android应用的过程中,我们需要时刻注意保障应用的稳定性和界面响应性,因为不稳定或者响应速度慢的应用将会给用户带来非常差的交互体验.在越来越讲究用户体验的大环境下,用户也许会因为应用的 ...

  8. hoj Counting the algorithms

    贪心加树状数组 给出的数据可能出现两种情况,包括与不包括,但我们从右向左删就能避免这个问题. #include<stdio.h> #include<string.h> #inc ...

  9. 用IFrame作预览pdf,图片

    <iframe id="my_img" src="@ViewBag.path" width="100%" frameborder=&q ...

  10. php对gzip的使用(理论)

    gzip是GNU zip的缩写,它是一个GNU自由软件的文件压缩程序,也经常用来表示gzip这种文件格式.软件的作者是Jean-loup Gailly和Mark Adler.1992年10月31日第一 ...