每个人心中都有一个初恋,对没错,java就是我的初恋,没有为什么。
世间万物都是对象,我们自身也是对象,不同对象之间的相互作用和通讯构成了完整的现实世界。
面向对象就是把事物分类的过程。
JAVA中变量包括成员变量,局部变量,静态变量。例如
public class A{
? ? String a; // a 就是成员变量
? ? static String c; // c 就是静态变量
? ? public void getA() {
? ? ? ? String b = ""; // b 就是局部变量
? ? }
}
方法包括:方法名、返回值、参数和方法体组成
例如:
public String getA() {
? ? return “a”;
}
String是返回值类型,“a”是返回值,getA是方法名,()中是空的代表,此方法为无参方法。
构造函数必须与类同名,每个类可以有一个以上构造器,构造函数没有返回值构造函数可以有0个或0个以上的参数,构造器总是伴随new操作一起调用
例如:
public class A{
? ? public A() {}
? ??
? ? public A(int v1) {}
? ??
? ? public A(int v1, int v2) {}
}
对象引用 A a = new A();
在类里面来引用这个类的属性和方法。内部类可以用类名.this的方式引用外部对象
首先是抽象,把事物抽象成一个类,其次才是封装,将事物拥有的属性和动作隐藏起来,只保留特定的方法与外界联系
Java的类可以分为三类:
类:使用class定义,没有抽象方法
在这三个类型之间存在如下关系:
继承以后子类可以得到什么:
关于构造函数:
多态
在了解多态之前,首先需要知道方法的唯一性标识即什么是相同/不同的方法,一个方法可以由:修饰符如public、static+返回值+方法名+参数+throw的异常 5部分构成,其中只有方法名和参数是唯一性标识,意即只要方法名和参数相同那他们就是相同的方法,所谓参数相同,是指参数的个数,类型,顺序一致,其中任何一项不同都是不同的方法。何谓重载,重载是指一个类里面(包括父类的方法)存在方法名相同,但是参数不一样的方法,参数不一样可以是不同的参数个数、类型或顺序,如果仅仅是修饰符、返回值、throw的异常 不同,那这是2个相同的方法,编译都通不过,更不要说重载了
何谓覆盖/重写,覆盖描述存在继承关系时子类的一种行为子类中存在和父类相同的方法即为覆盖,何谓相同方法请牢记前面的描述,方法名和参数相同,包括参数个数、类型、顺序
覆盖/重写的规则:子类不能覆盖父类private的方法,private对子类不可见,如果子类定义了一个和父类private方法相同的方法,实为新增方法;重写方法的修饰符一定要大于被重写方法的修饰符(public > protected > default > private),重写抛出的异常需与父类相同或是父类异常的子类,或者重写方法干脆不写throws,重写方法的返回值必须与被重写方法一致,否则编译报错,静态方法不能被重写为非静态方法,否则编译出错
理解了上述知识点,是时候定义多态了,多态可以说是“一个接口,多种实现”或者说是父类的引用变量可以指向子类的实例,被引用对象的类型决定调用谁的方法,但这个方法必须在父类中定义,多态可以分为两种类型:编译时多态(方法的重载)和运行时多态(继承时方法的重写),编译时多态很好理解,运行时多态依赖于继承、重写和向上转型
整型?
byte 1字节 ? ? ? ? ? -128——127?
short ?2 字节 ? ? ? ? -32,768 —— 32,767?
int 4 字节 ? ? ? ? ?-2,147,483,648 ——2,147,483,647(超过20亿)?
long 8 字节 ? -9,223,372,036,854,775,808 - 9,223,372,036854,775,807?
java中所有的数据类所占据的字节数量与平台无关,java也没有任何无符号类型?
浮点类型?
float 4 字节 ? ? ? ? 32位IEEE 754单精度(有效位数 6 – 7位)?
double 8 字节 ? ? ? ? 64位IEEE 754双精度(有效位数15位)
Unicode编码的字符单元?
char ? ?2 字节 ? ? ? ? ?整个Unicode字符集?
真值类型?
boolean ? ?1 位 ? ? ? ? ? ? True或者false?
封装类型?
类class?
接口interface
数组array
类Class引用
接口引用
大概可以分三种,分别是类修饰、属性变量修饰、方法修饰等。
public
类修饰:将一个类声明为公共类,他可以被任何对象访问,一个程序的主类必须是公共类。
属性变量修饰:指定该变量为公共的,他可以被任何对象的方法访问。
方法修饰:指定此方法是公共的,所有人都可以调用
volatile
类修饰:不能修饰类。
属性变量修饰:修饰的成员变量在每次被线程访问时,都强制从共享内存中重新读取该成员变量的值。而且,当成员变量发生变化时,会强制线程将变化值回写到共享内存。这样在任何时刻,两个不同的线程总是看到某个成员变量的同一个值。一个 volatile 对象引用可能是 null。
方法修饰:不能修饰方法。
native
类修饰:不能修饰类。
属性变量修饰:不能修饰属性变量。
方法修饰:本地修饰符。指定此方法的方法体是用其他语言在程序外部编写的。
原文:https://www.cnblogs.com/yuanjiangnan/p/12543389.html