override

c#重点[封装,继承,多肽]

假装没事ソ 提交于 2019-11-26 22:38:38
面向对象的语言三大特点:封装、继承、多态 Ⅰ.封装:是把类的内部隐藏起来,以防止外部世界看见的一个面向对象的概念,通过关键字去控制变量,方法的访问权限。 1).访问修饰符: Ⅱ.继承: eg:我们建一个Person作为父类,Chinese作为子类 1 class Person 2 { 3 public string name="zhangsan"; 4 public int age=21; 5 //类里面有一个默认的构造方法,我们在下面写了一个构造方法,如果想去调用这个无参数的构造方法,那就要加一个无参构造方法 6 public Person() 7 { 8 Console.WriteLine("我是一个人类"); 9 } 10 public void SayHi() 11 { 12 Console.WriteLine("hello,我是人类!"); 13 } 14 } Person 1 class Chinese:Person 2 { 3 4 } Chinese 我们在程序入口里面调用父类里面的成员: class Program { static void Main(string[] args) { Chinese c = new Chinese(); Console.WriteLine(c.name); Console.WriteLine(c.age); c.SayHi();

C#语言中的修饰符大总结

百般思念 提交于 2019-11-26 22:00:40
注:本文参考了网上的一些资料,但作者不可考,特向该作者表示感谢。 1. 访问修饰符 指定声明的类型和类型成员的可访问性。 (1) public : 是类型和类型成员的访问修饰符。公共访问是允许的最高访问级别。对访问公共成员没有限制。 (2) private :是一个成员访问修饰符。私有访问是允许的最低访问级别。私有成员只有在声明它们的类和结 构体中才是可访问的。 (3) internal : 是类型和类型成员的访问修饰符。只有在同一程序集的文件中,内部类型或成员才是可访问的。 (4) protected : 是一个成员访问修饰符。受保护成员在它的类中可访问并且可由派生类访问。 2. 可以作用于类和结构的修饰符 (1) abstract :指示某个类只能是其他类的基类。 可以和类、方法、属性、索引器及事件一起使用。在类声明中使用 abstract 修饰符以指示某个类只能是其他类的基类。标记为抽象或包含在抽象类中的成员必须通过从抽象类派生的类来实现。 (2) sealed :指定类不能被继承。 可以应用于类、实例方法和属性。密封类不能被继承。密封方法会重写基类中的方法,但其本身不能在任何派生类中进一步重写。当应用于方法或属性时, sealed 修饰符必须始终与override一起使用。 在类声明中使用 sealed 修饰符可防止继承此类 (3) static

第531篇--Prism Boot Strapper Demo

对着背影说爱祢 提交于 2019-11-26 21:34:07
本文用一个非常简单的例子,讲述Prism中的启动工程boot strapper的逻辑。 首先看一下工程图: 这是启动类Boot strapper: public class BootStrapper : UnityBootstrapper { /// <summary> /// 创建起始Window /// </summary> /// <returns></returns> protected override DependencyObject CreateShell() { var shell = this .Container.TryResolve<Shell>() as DependencyObject; return shell; } /// <summary> /// 与App.Current.MainWindow联系 /// </summary> protected override void InitializeShell() { base .InitializeShell(); App.Current.MainWindow = (Window) this .Shell; App.Current.MainWindow.Show(); } /// <summary> /// 配制ModuleCatalog,引用基类的一个this.ModuleCatalog /// <

27. Spring Boot 缓存注解详解: @Cacheable、@CachePut、 @CacheEvict、@Caching、@CacheConfig

一笑奈何 提交于 2019-11-26 19:55:18
1、使用OGNL的命名规则来定义Key的值 @Cacheable(cacheNames = {"user"},key = "#root.methodName + '[' + #id + ']'") @Override public User selectByPrimaryKey(Integer id) { return userMapper.selectByPrimaryKey(id); } 2、自定义Key生成器 @Configuration public class MyConfig { @Bean public KeyGenerator myKeyGenerator(){ return new KeyGenerator() { @Override public Object generate(Object o, Method method, Object... params) { String key = o.getClass().getSimpleName()+"."+method.getName()+Arrays.asList(params); return key; } }; } } key 属性和keyGenerator属性只能二选一 @Cacheable(cacheNames = {"user"},keyGenerator = "myKeyGenerator")

数据结构—自定义队列

拥有回忆 提交于 2019-11-26 19:15:56
用链表创建队列 public class LinkQueue<E> implements Queue<E>{ public class Node{ public E e; public Node next; public Node(E e , Node next){ this.e = e ; this.next = next; } public Node(E e){ this.e = e; this.next = null; } public Node(){ this(null,null); } @Override public String toString(){ return e.toString(); } } private Node head; private Node tail; private int size; public LinkQueue(){ head = null; tail = null; size = 0; } @Override public int getSize() { return size; } @Override public boolean isEmpty() { return size == 0; } @Override public E dequeue() { // 1.队列为空 即队首为空 if(head == null){

手写FutureTask

感情迁移 提交于 2019-11-26 12:46:33
首先继承 Runnable Future 接口然后实现 我们只需要 用到run() 和get()方法就可以其它不用看 this.wait(); 调用这个方法让它阻塞,一致等到结果 然后调用notifyAll() 唤醒线程. import java.util.concurrent.*; public class JxdFutureTask<V> implements Runnable, Future<V> { Callable<V> callable; V result = null; //构造方法 public JxdFutureTask(Callable<V> callable) { this.callable = callable; } @Override public void run() { try { result =this.callable.call(); synchronized (this){ this.notifyAll();//唤醒阻塞等待的线程 } } catch (Exception e) { e.printStackTrace(); } } //需要实现,跑业务 @Override public boolean cancel(boolean mayInterruptIfRunning) { return false; } @Override public

解决swipeRefreshLayout与RecyclerView的滑动冲突

蹲街弑〆低调 提交于 2019-11-26 01:13:16
网上给出的最多的滑动冲突解决办法思路:首先给RecyclerView添加滑动监听事件,其次获取recyclerView的第一个子布局的位置,如果你是上滑的话,recyclerView.getChildAt(0).getTop()获取的值肯定是个负数,当第一个item项出现,并且在顶部时swipeRefreshLayout才能启用,这样解决滑动冲突,但是这个方法在部分手机上不兼容。 网上的源码大概是这样的: recyclerView.addOnScrollListener( new RecyclerView.OnScrollListener() { @Override public void onScrolled (RecyclerView recyclerView, int dx, int dy) { super .onScrolled(recyclerView, dx, dy); int topRowVerticalPosition = (recyclerView == null || recyclerView.getChildCount() == 0 ) ? 0 : recyclerView.getChildAt( 0 ).getTop(); swipeRefreshLayout.setEnabled(topRowVerticalPosition >= 0 ); }

flutter,SliverPersistentHeader实现Tab顶部吸附固定效果

喜你入骨 提交于 2019-11-25 21:27:56
直接上代码啦 import 'package:flutter/material.dart'; class StickyDemo extends StatefulWidget { @override _StickyDemoState createState() => _StickyDemoState(); } class _StickyDemoState extends State<StickyDemo> with SingleTickerProviderStateMixin { TabController tabController; @override void initState() { super.initState(); this.tabController = TabController(length: 2, vsync: this); } @override Widget build(BuildContext context) { return Scaffold( body: CustomScrollView( slivers: <Widget>[ SliverAppBar( pinned: true, elevation: 0, expandedHeight: 250, flexibleSpace: FlexibleSpaceBar( title: Text(