动手动脑
//1.new Foo();没有初始化因为已经自定义了构造方法
//2.当无参执行类成员定义时指定的默认值或类的初始化块,谁排在最后最终结果是什么;
//当有参时结果就是传的参数
/*public class Main {
public static void main(String[] args) {
InitializeBlackClass obj = new InitializeBlackClass();
System.out.println(obj.filed);
obj = new InitializeBlackClass(300);
System.out.println(obj.filed);
}
public static class InitializeBlackClass {
public InitializeBlackClass(int filed) {
this.filed = filed;
}
public InitializeBlackClass() {
}
{
filed = 200;
}
public int filed = 100;
}
}*/
/*class Root
{
static
{
System.out.println("Root的静态初始化块");
}
{
System.out.println("Root的普通初始化块");
}
public Root()
{
System.out.println("Root的无参数的构造器");
}
}
class Mid extends Root
{
static
{
System.out.println("Mid的静态初始化块");
}
{
System.out.println("Mid的普通初始化块");
}
public Mid()
{
System.out.println("Mid的无参数的构造器");
}
public Mid(String msg)
{
//通过this调用同一类中重载的构造器
this();
System.out.println("Mid的带参数构造器,其参数值:" + msg);
}
}
class Leaf extends Mid
{
static
{
System.out.println("Leaf的静态初始化块");
}
{
System.out.println("Leaf的普通初始化块");
}
public Leaf()
{
//通过super调用父类中有一个字符串参数的构造器
super("Java初始化顺序演示");
System.out.println("执行Leaf的构造器");
}
}
public class Main
{
public static void main(String[] args)
{
new Leaf();
}
}*/
//先执行父类的静态初始化块然后子类的静态初始化快
//然后执行父类中的普通初始化和无参和有参数构造器,然后子类
//静态初始化块只执行一次。
//创建子类型的对象时,也会导致父类型的静态初始化块的执行。
/*
静态方法中只允许访问静态数据,那么,如何在静态方法中访问类的实例成员(即没有附加static关键字的字段或方法)?
*/
/*通过静态方法访问静态方法,进而访问实例成员:如果你有一个静态方法,可以通过它访问静态成员,然后再从静态方法中调用实例方法来访问实例成员。
public class Main {
private int instanceVariable = 42;
public void instanceMethod() {
System.out.println("Instance Variable: " + instanceVariable);
}
public static void staticMethod() {
System.out.println("Calling static method");
}
public static void main(String[] args) {
staticMethod();
Main obj = new Main ();
obj.instanceMethod();
}
}*/
/*
传递类的实例作为参数:你可以将类的实例作为参数传递给静态方法,然后在静态方法中使用该实例来访问实例成员。这是一种常见的方式,可以让静态方法访问特定实例的非静态数据。
public class Main {
private int instanceVariable = 42;
public static void staticMethod(Main instance) {
int value = instance.instanceVariable;
System.out.println("Instance Variable: " + value);
}
public static void main(String[] args) {
Main obj = new Main ();
staticMethod(obj);
}
}
*/
//2.当无参执行类成员定义时指定的默认值或类的初始化块,谁排在最后最终结果是什么;
//当有参时结果就是传的参数
/*public class Main {
public static void main(String[] args) {
InitializeBlackClass obj = new InitializeBlackClass();
System.out.println(obj.filed);
obj = new InitializeBlackClass(300);
System.out.println(obj.filed);
}
public static class InitializeBlackClass {
public InitializeBlackClass(int filed) {
this.filed = filed;
}
public InitializeBlackClass() {
}
{
filed = 200;
}
public int filed = 100;
}
}*/
/*class Root
{
static
{
System.out.println("Root的静态初始化块");
}
{
System.out.println("Root的普通初始化块");
}
public Root()
{
System.out.println("Root的无参数的构造器");
}
}
class Mid extends Root
{
static
{
System.out.println("Mid的静态初始化块");
}
{
System.out.println("Mid的普通初始化块");
}
public Mid()
{
System.out.println("Mid的无参数的构造器");
}
public Mid(String msg)
{
//通过this调用同一类中重载的构造器
this();
System.out.println("Mid的带参数构造器,其参数值:" + msg);
}
}
class Leaf extends Mid
{
static
{
System.out.println("Leaf的静态初始化块");
}
{
System.out.println("Leaf的普通初始化块");
}
public Leaf()
{
//通过super调用父类中有一个字符串参数的构造器
super("Java初始化顺序演示");
System.out.println("执行Leaf的构造器");
}
}
public class Main
{
public static void main(String[] args)
{
new Leaf();
}
}*/
//先执行父类的静态初始化块然后子类的静态初始化快
//然后执行父类中的普通初始化和无参和有参数构造器,然后子类
//静态初始化块只执行一次。
//创建子类型的对象时,也会导致父类型的静态初始化块的执行。
/*
静态方法中只允许访问静态数据,那么,如何在静态方法中访问类的实例成员(即没有附加static关键字的字段或方法)?
*/
/*通过静态方法访问静态方法,进而访问实例成员:如果你有一个静态方法,可以通过它访问静态成员,然后再从静态方法中调用实例方法来访问实例成员。
public class Main {
private int instanceVariable = 42;
public void instanceMethod() {
System.out.println("Instance Variable: " + instanceVariable);
}
public static void staticMethod() {
System.out.println("Calling static method");
}
public static void main(String[] args) {
staticMethod();
Main obj = new Main ();
obj.instanceMethod();
}
}*/
/*
传递类的实例作为参数:你可以将类的实例作为参数传递给静态方法,然后在静态方法中使用该实例来访问实例成员。这是一种常见的方式,可以让静态方法访问特定实例的非静态数据。
public class Main {
private int instanceVariable = 42;
public static void staticMethod(Main instance) {
int value = instance.instanceVariable;
System.out.println("Instance Variable: " + value);
}
public static void main(String[] args) {
Main obj = new Main ();
staticMethod(obj);
}
}
*/
本文来自博客园,作者:赵千万,转载请注明原文链接:https://www.cnblogs.com/zhaoqianwan/p/17731154.html
千万千万赵千万
浙公网安备 33010602011771号