一 代码块
代码块分四类
1 局部代码块
2 静态代码块
3构造代码块
4同步代码块
(1)局部代码块 :一看到局部代码块 我们首先 想到的是 局部变量 他的位置跟局部变量一样他的位置也在方法中
他的作用限定了局部变量的生命周期
// 局部代码块
//{
//int number = 10;
//System.out.println(number);
//}
//System.out.println(number);number 释放,出栈
2 构造代码块 看到构造 代码块 我们首先想到的时构造方法 他的位置在类中 方法外
作用:如果每个对象都有相同的方法区执行 可以再代码块中调用但是我们在开发中几乎没有这样的情况
调用顺序:在你创建对象时,如果你有构造代码块,系统会先给你调用构造代码块 之后在调用构造方法
class Person{
String name;
int age;
// 怎么写 有几种 注意事项
public Person() {
System.out.println("我是无参的构造函数");
}
public Person(String name,int age) {
this.name = name;
this.age = age;
System.out.println("我是有参的构造函数");
}
public void sayhi(){
System.out.println("hello");
}
//构造代码块
{
System.out.println("我是构造代码块");
}
3 静态代码块(使用static来修饰)
位置:在类中,方法外
特点:他只加载一次,并且随着类的加载而加载
应用场景(java):jdbc数据库的连接
public class Demo01 {
static {
System.out.println("我是Demo01的代码块");
}
二 继承(关键字 extends)
什么叫继承?
继承是连接了类与类的代码之间的关系
也可以理解成父与子的关系
继承的特点:
1:他减少了重复的代码
2:减少了你的工作量
3 :可以把类中相同的代码抽取出来,写成一个父类
继承他有特点就有弊端
弊端:高内聚 低耦合
也不是父类所有东西子类都能继承的
如构造方法
(注意事项:类里面不能定义类)
继承小举例
public class Demo02 {
public static void main(String[] args) {
Cat cat = new Cat();
cat. color = "黑色";
cat. leg = 4;
cat.sayhi();
}
}
//创建写一个动物类
class Aanima{
String color;
int leg;
//String name;
public void sayhi() {
System.out.println(color+"....."+leg);
}
}
// 类里面不能定义类 extends继承
class Cat extends Aanima{
}
class Dog extends Aanima{
}
如果我们遇到继承时 父类 和 子类有相同名字的成员变量时该怎么办呢
这时super属性就出来了
super 在类中代表的是父类的属性
public class Demo07 {
public static void main(String[] args) {
GlassCup g = new GlassCup();
g.print();
}
}
class Cup{
public void print() {
System.out.println("我是杯子");
}
}
class GlassCup extends Cup{
public void print() {
//Override和Overlood有什么区别
//Override重写
//Overrlood重载
//重写的应用场景
//当子类的方法 相对 父类的方法有了升级
//ios 7 Sirl 只能说中文
//ios 8 Sirl可以说英文 也 可以 说英文
//方法的重载是方法名一样 参数不一样
//当父类与子类的方法一致是 ,叫方法的重写
//当方法名相同时
//super点方法可以调用 父类的方法
super.print();
System.out.println("我是玻璃杯");
}
}
class Ios7{
public void sirl() {
System.out.println("我能说英文");
}
}
class Ios8 extends Ios7{
//注解 在Override 标示着这个方法是重写父类的方法
public void sirl() {
//这里调不调用父类方法 要根据实际开发情况
super.sirl();
System.out.println("我能说中文");
三 final 关键字
1 final修饰 类是 不能被继承
2 final修饰方法是 不能被重写
3 final修饰变量是 不能被更改
final修饰的变量相当于常量,常量是不能修改的量
加static调用方便
因为他修饰相当于常量 加了静态 能共享
用final命名时 有一个命名规则 名词全部大写 多单词用下化线
public static final double MAX_VALUE= 3.14;
public void sayhi() {
System.out.println(MAX_VALUE);
}
}