马尔克斯在百年孤独中说的,人生的实质就是一个人活着,不要对他人心存太多期待。
所有让我们欢喜的期待,早晚有一天会让我们大失所望。
余生最好的活法,就是不要对任何事物抱有太大的期待,做自己喜欢的事,爱自己喜欢的人
别失望太多,别期待太多,得知,坦然。
失之淡然,很喜欢傅首尔的一句话,没有人会像你想的那样爱你。
明白这一点,你就不会再瞎想了。
对爱人期待太高,容易放大对方的缺点,忽略了对方其余的所有的付出,
对朋友期待太高,你把他当成了真心知己。或许他只是与你逢场作戏。
人这一生不必计较,放下过多的执念与期待,与其挣扎不如释然
愿你有一颗轻盈的心,经营人生,风来听风,雨来看雨。
———————————— 一禅心灵庙语
假如:某个程序员创建的 Car 类和另外一个程序创建 Car 类在合并到同一个程序中使用,这时就会发生命名上冲突的问题,而我们通过使用 包 来解决这样的问题
如:www.baidu.com 倒置的包名 com.baidu.www.demo
例如:创建 com.baidu.demo 的包,那么就会在文件管理中 生成一个对应该路径的 com/baidu.demmo 来存储该代码类
如果一个类没有 package 语句,则该类会被放到一个默认包中
包名要和代码路径相匹配. 例如创建 com.bit.demo1 的包, 那么会存在一个对应的路径 com/bit/demo1 来存
储代码.
如果一个类没有 package 语句, 则该类被放到一个默认包中
使用关键字 : package + 存放该类的路径
package com.test.demo;
package Blog0;
public class Blog04 {
public static void main(String args[]){
java.util.Date date = new java.util.Date(); // 第一种方式
System.out.println(date.toString());
}
}
import + 你所需要用到的类的包+类名,
import + 你所需要用到的类的包+*
package Blog0;
import java.util.Date; // 第二中方式
public class Blog04 {
public static void main(String args[]) {
Date date = new Date();
System.out.println(date.toString());
}
}
public class Blog04 {
public static void main(String args[]) {
System.out.println(Math.PI);
}
}
import java.util.*; // 表示导入该包下的所有的类
import java.util.*; // 表示导入该包下的所有的类
public class Blog04 {
public static void main(String args[]) {
Date date = new Date();
System.out.println(date.toString());
}
}
当两个使用 * 导入包种存在一个相同的 类名称的时,编译器不知道,你所需要的是哪一个类,因为在这两个 * 包下都有该类的名称,无法判断,需要哪一个
当然我们在导入包时,明确哪个包所对应的那个类,就不会出现编译器无法判断的情况了。
import java.util.*;
import java.sql.*; // Util包下中含有 Date,sql 包中页同样含有 Date 此时出现歧义
// 编译器无法判断,究竟是哪个是你所需要的,所以会报错
public class Blog04 {
public static void main(String args[]) {
Date date = new Date();
System.out.println(date.toString());
}
}
import static java.lang.Math.PI;// 静态导入包,
public class Blog04 {
public static void main(String args[]) {
System.out.println(PI); // 直接使用不需要加,类名 实例化
}
}
import java.util.Date;
public class Blog04 {
public static void main(String args[]) {
Date date = new Date();
System.out.println(date.toString());
}
}
class Animal {
String name ="HelloWorld";
}
public class Blog04 extends Animal{ // Blog04 继承了父类 Animal
public static void main(String args[]) {
Animal animal = new Animal();
System.out.println(animal.name);
}
}
class Animal { // 父类
String name ="HelloWorld";
public Animal() {
System.out.println("Animal 父类的构造方法");
}
}
class Cat extends Animal{
public Cat() { // 子类
super(); // 调用父类的构造方法
System.out.println("Cat 子类的构造方法");
}
public void func() {
System.out.println(super.name); // super.name调用父类的字段
}
}
public class Blog04 {
public static void main(String args[]) {
Cat cat = new Cat();
cat.func();
}
}
结果:
调用子类时,实例化子类时,会优先执行父类中的构造方法;
子类必须调用父类的构造方法
super( ) 子类调用父类的构造方法,super() 调用父类的构造方法,只能在子类的构造方法里使用,而且必须在构造方法中的 第一行 中,因为只能在 子类构造方法中的第一行中,所以 super() 只能有 一个
由此可见,不同的访问权限控制符的可见范围不同,在定义类时,要慎重思考该方法,属性、内部类的访问权限,提倡严控访问范围。过于宽泛的访问范围不利于模块间解耦及未来的代码维护。试想,在进行代码重构时,private 方法过旧,我们可以直接删除,且无后顾之忧。可以如果想删除一个 public 的方法,是不是要谨慎又谨慎地检查是否被调用。变量就像自己地孩子,要尽量控制在自己的视线范围内,如果作用域太大,无限制地到处乱跑,就会担心其安危,因此,在定义类时,推荐访问控制级别从严处理。
class Animal {
String name ="HelloWorld";
public Animal() {
System.out.println("Animal 父类的构造方法");
}
}
class Cat extends Animal{
public Cat() {
super(); // 调用父类的构造方法
System.out.println("Cat 子类的构造方法");
}
public void func() {
System.out.println(super.name);
}
}
class ChineseGardenCat extends Cat {
public ChineseGardenCat() {
super(); // 调用父类构造方法
System.out.println("ChineseGardenCat 子类的构造方法");
}
}
public class Blog04 {
public static void main(String args[]) {
ChineseGardenCat chineseGardenCat = new ChineseGardenCat();
System.out.println(chineseGardenCat.name);
}
结果:
public class Studen {
// 业务
}
public class Teacher {
// 业务
}
public class School {
public Studen studen;
public Teacher teacher;
public Studen[] studens2;
public Teacher[] teachers2;
}
限于自身水平,其中存在的错误,希望大家给予指教,韩信点兵——多多益善,谢谢大家,后会有期,江湖再见!